2012-09-12 10 views
9

¿Es posible tener algo comodibujable Android con parámetros

estirable/myshape.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 

    <solid android:color="{0}" /> 
</shape> 

y después de la clase Java tomar este paso dibujable valores para los parámetros. Algo así como

Drawable myshape = ???.getDrawableWithParameters(R.drawable.myshape, 0x00ff00); 
+0

Duplicado de http://stackoverflow.com/questions/8396779/android-xml-drawable- parámetros – Mene

Respuesta

0

Si crea un shape la forma en que han mostrado en el ejemplo, entonces será accesible como un GradientDrawable.

GradientDrawable d = (GradientDrawable) getResources().getDrawable(R.drawable.yourid); 

Si se echa un vistazo a la documentación (enlace de arriba) se puede ver todas las funciones, se puede acceder desde un objeto GradientDrawable. También puede configurar el color y el ancho del fondo y del borde más adelante, mediante el uso de este objeto mediante programación.

No estoy 100% seguro de que cada vez que cree una forma en xml, obtendrá un GradientDrawable. Necesitaba modificar algunas propiedades en una forma yo mismo, y me di cuenta de que veía ClassCastExceptions cuando intentaba convertir a otros tipos de Drawable s

+1

No se trata de la forma. Podría ser una lista de capas. Los parámetros es lo que pido. Si hay una manera en que podríamos pasar los parámetros en dibujable como lo hacemos en las cadenas – pbaris

+0

¿Desea pasar parámetros como colores y tamaños a un dibujable solo utilizando su id y los parámetros que le gustan? No, no creo que eso sea posible. Eso violaría los principios de oop, que todo desarrollador de Java debería seguir (en mi opinión), y sería completamente innecesario, porque todas estas subclases Drawable tienen una interfaz realmente amigable para manejar esas cosas. –

Cuestiones relacionadas