yo tengo
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid
android:color="#FFFF00" />
<padding android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp" />
</shape>
<TextView
android:background="@drawable/test"
android:layout_height="45dp"
android:layout_width="100dp"
android:text="Moderate"
/>
Así que ahora quiero que esta forma cambie de color según la información que recibo de una llamada de servicio web. Por lo tanto, podría ser amarillo o verde o rojo o lo que sea, dependiendo del color que reciba de la llamada de servicio web.
¿Cómo puedo cambiar el color de la forma? ¿Basado en esta información?
View.getBackground()
devuelve ayGradientDrawable
noShapeDrawable
causa que la aplicación se bloquee en el tiempo de ejecución, debido a una conversión no válida al intentar obtener la referencia y establecer el color mediante programación. [Android Shape doc] ( developer.android.com/guide/topics/resources/… ) afirma: DATATYPE DE RECURSOS COMPILADOS: puntero de recursos a aGradientDrawable
.Respuestas:
Podrías modificarlo simplemente así
fuente
java.lang.ClassCastException: android.graphics.drawable.GradientDrawable cannot be cast to android.graphics.drawable.ShapeDrawable
al intentar esta sugerencia.Para mí, se estrelló porque
getBackground
devolvió un enGradientDrawable
lugar de unShapeDrawable
.Así que lo modifiqué así:
fuente
Esto funciona para mí, con un recurso xml inicial:
Resultado de lo anterior: http://i.stack.imgur.com/hKUR7.png
fuente
Puedes construir tus propias formas en Java. Hice esto para un iPhone como Page Controler y pinté las formas en Java:
espero que esto ayude. Greez Fabian
fuente
Tal vez alguien más necesite cambiar el color en el XML sin crear múltiples dibujables como yo necesitaba. Luego haga un círculo dibujable sin color y luego especifique backgroundTint para ImageView.
circle.xml
Y en tu diseño :
Editar:
Hay un error con respecto a este método que impide que funcione en Android Lollipop 5.0 (API nivel 21). Pero se han solucionado en versiones más nuevas.
fuente
fuente
circle.xml (dibujable)
diseño
en actividad
fuente
Esta solución funcionó para mí usando el Android SDK v19:
fuente
Si tienes una imagen como esta:
que le dan una forma dibujable como src, puedes usar este código para cambiar el color de la forma:
fuente
Mi forma xml:
Mi actividad xml:
Mi actividad java:
Cuadro del resultado : resultado
fuente
La forma más sencilla de llenar la forma con el Radio es:
XML:
Java:
fuente
Intento la respuesta de Ronnie, y mi aplicación falló. Luego reviso mi xml dibujable. Se parece a esto:
. Lo cambié a esto: (también cambié los atributos)
Funciona.
Para aquellos que encuentran el mismo problema.
fuente
drawable_rectangle.xml
Vista de texto
fuente
Puede usar un adaptador de enlace (Kotlin) para lograr esto. Cree una clase de adaptador de enlace denominada ChangeShapeColor como se muestra a continuación
Cree una forma dibujable en la carpeta res / drawable. He creado un circulo
Finalmente refiéralo a su punto de vista
fuente