Cómo cambiar el color de la forma establecida en la vista de imagen
Ahora el problema comienza con sólo fijar el color de una forma. He creado una forma de rectángulo en drawable
y establecerlo a ImageView
como este
<LinearLayout android:layout_width="0dp" android:layout_height="fill_parent" android:orientation="vertical" android:layout_weight="0.15" android:layout_marginRight="10dp" android:gravity="center_vertical"> <ImageView android:id="@+id/iv_priority" android:src="@drawable/case_priority" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout>
EDITAR
Mi caso_prioridad.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#009600" /> <size android:width="30dp" android:height="30dp" /> </shape>
Ahora necesito cambiar el color de esta forma. De hecho, este color viene del servicio web, y necesito cambiarlo. Así que mi pregunta es: ¿Cómo podemos cambiar el color de esta forma mediante programación. Y fijarla a la vista de la imagen. He pasado por algunos ejemplos en stackoverflow pero no puedo cambiarlo a la vista de la imagen. ¡Ayuda por favor !!!! Gracias por adelantado.
EDITAR:
Puede ser que no estaba claro en mi pregunta, Tan Sólo un refinamiento a la pregunta. En realidad, tengo un ImageView donde establezco una fuente que es en realidad un dibujable. Por defecto es verde como en mi código mostrado arriba. Ahora el servicio web devuelve el color de esta vista de imagen que debe cambiarse en consecuencia, por lo que no puedo cambiarlo desde xml durante el tiempo de ejecución, así que necesito cambiarlo desde el archivo java. Puesto que estoy usando la forma y la opinión de la imagen, .setBackground () no ayudará mucho aquí. Así que ¿Cuál puede ser la solución probable para esto. Gracias por contestar y disculpen las molestias.
Gracias por todas las respuestas. Me ayudó a llegar a responder.
En mi diseño cambié android:src="" to android:background="@drawable/case_priority"
Y en mi archivo java n = incluye este código: ->
Resources res = getResources(); final Drawable drawable = res.getDrawable(R.drawable.case_priority); drawable.setColorFilter(Color.YELLOW, Mode.SRC_ATOP); ImageView img = (ImageView)findViewById(R.id.iv_priority); img.setBackgroundDrawable(drawable);
Eso es. Espero que alguien.
Echa un vistazo aquí
http://developer.android.com/guide/topics/graphics/2d-graphics.html#shape-drawable .
En lugar de crear la Shape
en código puede utilizar inflate
para inflar su XML si lo desea.
Añadir a la vista de imagen
android:background="#152" // or some other color code
Editar 1: para hacerlo con código haz esto
ImageView.setBackgroundColor(Color.parseColor("red")); // Or any color code like #000 , #987
Editar 2:
ImageView Imgs = (ImageView) findViewById(R.id.iv_priority); Imgs.setBackgroundColor(Color.parseColor("ColorCode"));
IimageView.setBackgroundColor ("# 152");
Como la respuesta de Lars Blumberg tampoco quería cambiar el fondo, así que apliqué lo siguiente para codificar mi imagen, ya que no tenía un GradientDrawable:
Drawable drawable = imageView.getDrawable(); drawable.setColorFilter(Color.CYAN, PorterDuff.Mode.MULTIPLY);
Todas las soluciones sugieren utilizar el fondo de ImageView. Creo que esta no es la solución deseada. La pregunta ya refleja lo que sería un enfoque intuitivo: Aplicar la forma al atributo src
. Con el fin de cambiar el color de la forma programáticamente haría:
GradientDrawable drawable = (GradientDrawable) priorityImageView.getDrawable(); drawable.setColor(Color.RED);
Dado que la forma se asigna como en la pregunta original:
<ImageView android:id="@+id/iv_priority" android:src="@drawable/case_priority" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
Esto también trae la ventaja de que puede configurar el fondo de ImageView por separado de su contenido.