2009-09-09 22 views
9

Tengo un ListView que estoy rellenando desde un ListAdapter personalizado. Dentro del adaptador (en el método getView(int, View, ViewGroup)) estoy configurando el color de fondo del View usando setBackgroundColor(int). El problema es que no importa de qué color le puse el fondo siempre sale un gris oscuro. También podría valer la pena notar que estoy usando el tema de Luz.Android ListView colores de fondo que siempre muestran gris

relevantes (simplificado) bits de código:

AndroidManifest.xml:

<activity 
    android:name=".MyActivity" 
    android:theme="@android:style/Theme.Light" /> 

MyAdapter.java:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = LayoutInflater.from(mContext); 
    View av = inflater.inflate(R.layout.my_row, parent, false); 
    av.setBackgroundColor(R.color.myRow_red); 
    mName = (TextView) av.findViewById(R.id.myRow_name); 
    mName.setText("This is a name"); 
    return av; 
} 

Cualquier ideas/sugerencias?

Respuesta

22

que puedes usar: setBackgroundResource(R.color.myRow_red) en lugar de setBackgroundColor(). En su ejemplo, el color de fondo se asigna con el ID en lugar del color real descrito en los recursos.

+0

gracias eres un salvavidas :) – user1940676

+0

Tengo una situación similar pero no puedo usar esta solución para las formas. He hecho una pregunta más detallada aquí: http://stackoverflow.com/questions/39820240/android-canvas-drawrect-colour-always-shows-as-grey – Vedant261

6

Debe establecer el atributo cacheColorHint con el color de fondo deseado para su lista. Esta es una solución requerida para tener en cuenta una optimización de dibujo que Android realiza en las listas.

Ver aquí: link text

+0

Correcto, y si no necesita cambiar dinámicamente el color de fondo, puede agregar android: background = "# FF0000" en su archivo de diseño my_row.xml. –

+0

midj: eso no es verdad en mi caso, solo estás viendo un ejemplo súper simplificado. –

+0

@fiXedd: ¿cuál es su problema, entonces? ¿No se ha desactivado la ayuda del caché de colores? – Matthias

0

Frío siempre envuelva toda la fila dentro de otra vista y establezca el color de fondo en esa vista. Esta vista sería el primer (y único) hijo de la fila.

0

probar esto:

setBackgroundColor(0xFF5DB9FB); 
0

tratar de hacer de esta manera:

av.setBackgroundColor(getResources().getColor(R.color.myRow_red));

2

me encontré con un problema similar en el que el divisor se acercaba gris. Encontré que las otras soluciones no tuvieron ningún efecto, pero funcionó android:divider="<drawable,color, or whatever>" en mi ListView.

Cuestiones relacionadas