android - tipo - modificar fuente en html
Cómo cambiar el color del texto del elemento simple de la lista (12)
Cree un archivo xml en res / values y copie el siguiente código
<style name="BlackText">
<item name="android:textColor">#000000</item>
</style>
y especifica el estilo en la actividad en Manifiesto como abajo
android:theme="@style/BlackText"
Tengo una ListActivity y estoy mostrando una lista con:
setListAdapter(new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_list_item_single_choice, mStringList));
Por defecto, el color del texto de los elementos de la lista es blanco, quiero cambiar el color del texto de las vistas de texto en la lista a negro.
¿Cómo debería hacerlo?
En palabras simples "no puedes hacerlo a través de setListAdapter simple" . debe usar una vista de lista personalizada para realizar cambios libremente en el color del texto o en cualquier otra vista
La forma más sencilla de hacerlo sin tener que crear nada adicional sería simplemente modificar la lista simple TextView
:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, strings) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) super.getView(position, convertView, parent);
textView.setTextColor({YourColorHere});
return textView;
}
};
Me doy cuenta de que esta pregunta es un poco antigua, pero esta es una solución realmente simple que faltaba. No es necesario crear un ListView personalizado o incluso un diseño personalizado.
Simplemente cree una subclase anónima de ArrayAdapter y anule getView (). Deje que super.getView () maneje todo el trabajo pesado. Como simple_list_item_1 es solo una vista de texto, puede personalizarla (por ejemplo, establecer textColor) y luego devolverla.
Aquí hay un ejemplo de una de mis aplicaciones. Estoy mostrando una lista de ubicaciones recientes y quiero que todas las apariciones de "Ubicación actual" sean azules y el resto de color blanco.
ListView listView = (ListView) this.findViewById(R.id.listView);
listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, MobileMuni.getBookmarkStore().getRecentLocations()) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) super.getView(position, convertView, parent);
String currentLocation = RouteFinderBookmarksActivity.this.getResources().getString(R.string.Current_Location);
int textColor = textView.getText().toString().equals(currentLocation) ? R.color.holo_blue : R.color.text_color_btn_holo_dark;
textView.setTextColor(RouteFinderBookmarksActivity.this.getResources().getColor(textColor));
return textView;
}
});
Otra forma más sencilla es crear un archivo de diseño que contenga la vista de texto que desee con textSize, textStyle, color, etc., que usted prefiera y luego usar con ArrayAdapter.
por ejemplo, mytextview.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tv"
android:textColor="@color/font_content"
android:padding="5sp"
android:layout_width="fill_parent"
android:background="@drawable/rectgrad"
android:singleLine="true"
android:gravity="center"
android:layout_height="fill_parent"/>
y luego úsalo con tu ArrayAdapter como siempre
ListView lst = new ListView(context);
String[] arr = {"Item 1","Item 2"};
ArrayAdapter<String> ad = new ArrayAdapter<String>(context,R.layout.mytextview,arr);
lst.setAdapter(ad);
De esta forma, no necesitará crear un adaptador personalizado para él.
Pruebe este código en lugar de android.r.layout.simple_list_item_single_choice
cree su propio diseño:
<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checkMark="?android:attr/listChoiceIndicatorSingle"
android:gravity="center_vertical"
android:padding="5dip"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/black"
android:textStyle="bold">
</CheckedTextView>
Si desea mantener todo el estilo pero cambiar algunos detalles, puede usar el estilo predeterminado definido en Android y cambiar lo que desee
<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="@android:color/background_light"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:background="?android:attr/activatedBackgroundIndicator"
android:minHeight="?android:attr/listPreferredItemHeightSmall" />
Luego configure el adaptador usando:
setListAdapter(new ArrayAdapter<String>(getApplicationContext(),
R.layout.list_item_custom, mStringList));
Si está creando una clase que amplía un Adaptador, puede usar la variable principal para obtener el contexto.
public class MyAdapter extends ArrayAdapter<String> {
private Context context;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
context = parent.getContext();
context.getResources().getColor(R.color.red);
return convertView;
}
}
Puede hacer lo mismo con RecyclerView.Adapter, pero en lugar de getview () usará onCreateViewHolder ().
Solo debe anular el método ArrayAdapter
de ArrayAdapter
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_list_item_1, mStringList) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
TextView text = (TextView) view.findViewById(android.R.id.text1);
text.setTextColor(Color.BLACK);
return view;
}
};
También me enfrento a esta situación. Puede manejar el método anterior. pero simple si pasa simple_dropdown_item_1line como recurso. Será texto de color negro por defecto.
Este es mi código que he logrado en el tipo de situación.
ArrayAdapter<String> arrAdapter =
new ArrayAdapter<String>(context,android.R.layout.simple_dropdown_item_1line,countryList);
listView.setAdapter(arrAdapter);
Tu código a continuación:
setListAdapter(new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_dropdown_item_1line, mStringList));
En realidad, android.R.layout.simple_dropdown_item_1line se utiliza para el menú desplegable. Te pido que veas este contenido de diseño una vez. Es solo texto simple. eso es todo. Su propiedad no afectará su tarea. Lo revisé. Funciona bien.
prueba este código ...
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffff00">
<ListView
android:id="@+id/android:list"
android:layout_marginTop="2px"
android:layout_marginLeft="2px"
android:layout_marginRight="2px"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/shape_1"
android:listSelector="@drawable/shape_3"
android:textColor="#ffff00"
android:layout_marginBottom="44px" />
</RelativeLayout>
puede usar el método setTextColor (int) o agregar estilo para cambiar el color del texto.
<style name="ReviewScreenKbbViewMoreStyle">
<item name="android:textColor">#2F2E86</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">10dip</item>