Cambiar el color de texto PreferenceActivity
Quiero cambiar el aspecto de la pantalla de preferencias de la aplicación de Android a color de texto oscuro. ¿Cómo puedo hacer esto? (He cambiado ya el fondo al color blanco)
- Android: "BadTokenException: No se puede agregar ventana; Está funcionando su actividad? "Al mostrar el diálogo en PreferenciaActividad
- Ejemplo de MultiSelectListPreference
- ¿Es posible cambiar el resumen de EditTextPreference dinámicamente en Android?
- Uso de findviewbyid en preferenciaactividad
- Iniciar nueva actividad de PreferenceActivity
- Android: Creación de preferencias personalizadas
- ¿Cómo manejar texto largo en las preferencias de Android?
- Android PreferencesActivity para crear una preferencia MODE_WORLD_WRITEABLE entre aplicaciones
- Abrir WebView no navegador de preferenciaScreen Android
- ¿Cómo obtener elementos (findViewById) para un diseño que se carga dinámicamente (setView) en un diálogo?
- Implementación de "color selector" de Android PreferenceScreen
- ¿PreferenceFragment con el fondo transparente?
- ¿Por qué Kit Kat requiere el uso de isValidFragment?
Supongo que usas una Actividad que extiende la PreferenceActivity
. Puede utilizar el método setTheme
para establecer un tema personalizado en su pantalla de preferencias. Simplemente defina uno en res/values/themes.xml
.
Se vería así:
<?xml version="1.0" encoding="UTF-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="Theme.DarkText"> <item name="android:textColor">#000000</item> </style> </resources>
Después, establézcalo en tu Actividad:
setTheme(R.style.Theme_DarkText);
Tomé la idea de Udinic, pero la mejoré un poco. Ahora es posible establecer el color de (en este caso) la categoría de preferencias en cualquier momento, y no sólo al inflar la vista.
Cómo hacerlo ?
En primer lugar, cree su clase personalizada tal como ésta:
import android.content.Context; import android.preference.PreferenceCategory; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; public class MyPreferenceCategory extends PreferenceCategory { private TextView categoryTitle; public PincardPreferenceCategory(Context context) { super(context); // TODO Auto-generated constructor stub } public PincardPreferenceCategory(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public PincardPreferenceCategory(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub } @Override protected View onCreateView(ViewGroup parent) { categoryTitle = (TextView)super.onCreateView(parent); return categoryTitle; } public void setBackgroundColor(int color) { categoryTitle.setBackgroundColor(color); } public void setTextColor(int color) { categoryTitle.setTextColor(color); } }
Una vez que se hace, usted tiene que utilizarlo mientras que define sus ajustes en XML.
Después de que sólo tiene que utilizar este bucle en su preferencia javaActividad:
for (int i = 0; i < getListView().getCount(); i++) { Object view = getListView().getItemAtPosition(i); if (view instanceof PincardPreferenceCategory) { ((PincardPreferenceCategory)view).setBackgroundColor(Color.BLUE); ((PincardPreferenceCategory)view).setTextColor(Color.RED); } }
Aquí está la idea. Puede hacerlo para cualquiera de sus configuraciones, y en cualquier momento. El diseño debe haber sido totalmente cargado antes de usar este código, porque de lo contrario, getListView (). GetCount () devolverá 0. No voy a trabajar si se utiliza en onCreate por ejemplo. Si desea hacerlo en el inicio, le sugiero que lo haga en el método onWindowFocusChanged.
- ¿Cómo puede borrar todas las tablas en ActiveAndroid?
- Cómo implementar un onMenuItemClickListener en android