Color de texto ListView de Android

Estoy tratando de establecer ListView textColor en negro, ya que estoy usando un fondo blanco.

Aquí está mi MailActivity

public class MailActivity extends ListActivity { String[] listItems = { "Compose", "Inbox", "Drafts", "Sent" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mails); setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, listItems)); } } 

y mi XML

      

Obtengo el fondo como blanco, pero no estoy seguro de dónde colocar el primer plano en negro. Lo intenté en el xml y parece que no está ayudando.

Bien, aquí hay algunas cosas que debes tener claras:

  1. El color de fondo que está configurando en su archivo xml corresponde a la actividad y no a los ListItems que está tratando de definir.
  2. Cada elemento de la lista tiene su propio archivo de diseño que debe pasarse o inflarse en caso de que esté utilizando un diseño complejo para el elemento de la lista.

Trataré de explicar esto con una muestra de código:

**** Comencemos con el diseño de ListItems ** : guárdelo en su carpeta res/layout de su proyecto Android con decir ** list_black_text.xml

       

Bueno, un diseño simple con un TextView para ser precisos. Debe tener una identificación asignada a TextView para usarla.

Ahora viene a tu pantalla / actividad / diseño jefe, como dije, estás definiendo fondo en tu pantalla con android:background atributo de android:background . Veo que también ha definido un TextView allí y sospecho que está tratando de definir el contenido / elemento de la lista allí, que no es necesario en absoluto.

Aquí está su diseño editado:

      

Y, por último, lo más importante, configure su adaptador.

 setListAdapter(new ArrayAdapter( this, R.layout.list_black_text, R.id.list_content, listItems)); 

Observe el recurso de diseño que estamos pasando al adaptador R.layout.list_black_text y R.id.list_content que es el ID de R.id.list_content que declaramos. También cambié el ArrayAdapter al tipo de cadena porque es genérico.

Espero que esto explique todo. Marque mi respuesta aceptada si está de acuerdo.

Desordenado, pero una buena solución rápida
También puede hacer esto con una solución rápida si no quiere seguir adelante con la definición de diseño complejo, etc.

Al instanciar el adaptador declarar una clase interna para hacer esto, aquí está el ejemplo del código:

  ArrayAdapter adapter=new ArrayAdapter( this, android.R.layout.simple_list_item_1, listItems){ @Override public View getView(int position, View convertView, ViewGroup parent) { View view =super.getView(position, convertView, parent); TextView textView=(TextView) view.findViewById(android.R.id.text1); /*YOUR CHOICE OF COLOR*/ textView.setTextColor(Color.BLUE); return view; } }; /*SET THE ADAPTER TO LISTVIEW*/ setListAdapter(adapter); 
  1. Cree un archivo de estilos, por ejemplo: my_styles.xml y guárdelo en res/values .
  2. Agregue el siguiente código:

         
  3. Agregue su estilo a su definición de Activity en su AndroidManifest.xml como un atributo android:theme , y asigne como valor el nombre del estilo que ha creado. Por ejemplo:

      

NOTA: el Widget.ListView proviene de aquí . También revisa esto .

simple_list_item_1 la simple_list_item_1 (Alt + Click) y coloqué la copia en mi carpeta res/layout , list_white_text.xml a list_white_text.xml con este contenido:

   

El android:textColor="@color/abc_primary_text_material_dark" traduce en blanco en mi dispositivo.

luego en el código java :

 ArrayAdapter adapter = new ArrayAdapter(this, R.layout.list_white_text, myList); 

Debe definir el color del texto en el diseño * simple_list_item_1 * que define el diseño de cada uno de sus elementos.

Establece el color de fondo de LinearLayout y no de ListView. El color de fondo de los elementos secundarios de LinearLayout es transparente por defecto (en la mayoría de los casos).

Y establece el color de texto negro para el TextView que no es parte de su ListView. Es un elemento propio (elemento hijo de LinearLayout) aquí.

nunca use getApplicationContext() Solo usa tu Actividad como Contexto. A ver si eso ayuda.

Por favor, consulte aquí: respuestas de CommonsWare

si no configuró su estilo de actividad, le muestra el fondo negro. Si desea realizar cambios tales como fondo blanco, texto negro de vista de lista, entonces es un proceso difícil.

ADD android: theme = “@ style / AppTheme” en Android Manifest .

Puedes hacer esto en tu código:

 final ListView lv = (ListView) convertView.findViewById(R.id.list_view); for (int i = 0; i < lv.getChildCount(); i++) { ((TextView)lv.getChildAt(i)).setTextColor(getResources().getColor(R.color.black)); }