icon - menu item background color android
Color de texto ListView de Android (7)
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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF">
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@android:id/empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Empty set"
android:textColor="#000000" />
</LinearLayout>
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.
- Cree un archivo de estilos, por ejemplo:
my_styles.xml
y guárdelo enres/values
. Agregue el siguiente código:
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="ListFont" parent="@android:style/Widget.ListView"> <item name="android:textColor">#FF0000</item> <item name="android:typeface">sans</item> </style> </resources>
Agregue su estilo a su definición de
Activity
en suAndroidManifest.xml
como un atributoandroid:theme
, y asigne como valor el nombre del estilo que ha creado. Por ejemplo:<activity android:name="your.activityClass" android:theme="@style/ListFont">
NOTA: el Widget.ListView
proviene de here . También revisa this .
Bien, aquí hay algunas cosas que debes tener claras:
- 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.
- 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
<?xml version="1.0" encoding="utf-8"?>
<!-- Definig a container for you List Item-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center_vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- Defining where should text be placed. You set you text color here-->
<TextView
android:id="@+id/list_content"
android:textColor="#000000"
android:gravity="center"
android:text="sample"
android:layout_margin="4dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
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:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF">
<ListView
android:id="@android:id/list" android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<!-- REMOVED TEXT VIEW, AND KEEPING BACKGROUND WHITE -->
</LinearLayout>
Y, por último, lo más importante, configure su adaptador.
setListAdapter(new ArrayAdapter<String>(
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<String> adapter=new ArrayAdapter<String>(
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);
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í.
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));
}
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 .
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:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:gravity="center_vertical"
android:textColor="@color/abc_primary_text_material_dark"
android:minHeight="?android:attr/listPreferredItemHeightSmall" />
El android:textColor="@color/abc_primary_text_material_dark"
traduce en blanco en mi dispositivo.
luego en el código java
:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_white_text, myList);