Cambiar el tema en java no cambia el color de fondo
Estoy tratando de cambiar el tema en tiempo de ejecución con java-código, porque quiero que el usuario pueda cambiar el tema de la aplicación a través del menú de preferencias. Así, dejo al usuario el tema, y luego leo los resultados como esto:
if (...) { getApplication().setTheme(R.style.BlackTheme); } else { getApplication().setTheme(R.style.LightTheme); }
Por desgracia esto no funciona por alguna razón … el color de la fuente cambia ligeramente de gris oscuro (tema claro) a un gris más brillante (tema negro), pero el fondo siempre se mantiene blanco / negro (dependiendo del tema que se seleccionó inicialmente en el Archivo de manifiesto)
- ScrollView: Cambia el color del efecto de borde con Holo
- Estilo de la casilla de verificación de Android
- La barra de acción se ve cortada mientras se utiliza Theme.AppCompat.Dialog
- ¿Cómo conseguimos el tema de una actividad?
- Cambio de tema de aplicación a nivel de programación?
Si quite por completo el tema-entrada en el archivo de manifiesto, entonces su como si hubiera seleccionado el tema negro ….
…. hay algo que estoy pasando por alto?
- AlertDialog Tema: ¿Cómo cambiar el color del texto del artículo?
- Android: No se puede diseñar el divisor de hilado
- Temas aparentemente ignorados en ICS
- Cómo establecer false cancelable a una actividad cuando se abre como un cuadro de diálogo?
- Estilo ICS en aplicaciones Froyo y Gingerbread
- Lollipop estilo EditBox
- Acceso al recurso definido en el tema y attrs.xml android
- PhoneGap 3.x Android - Tema de Popup / Dialog nativo
Tuve el mismo problema y lo resolví de esta manera ..
@Override public void onCreate(Bundle savedInstanceState) { if (getIntent().hasExtra("bundle") && savedInstanceState==null){ savedInstanceState = getIntent().getExtras().getBundle("bundle"); } //add code for theme switch(theme) { case LIGHT: setTheme(R.style.LightTheme); break; case BLACK: setTheme(R.style.BlackTheme); break; default: } super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //code }
Este código es para recrear el Paquete de ahorro de actividad y cambiar el tema. Usted tiene que escribir su propio onSaveInstanceState (Bundle outState); Desde API-11 puede utilizar el método recreate () en su lugar
Bundle temp_bundle = new Bundle(); onSaveInstanceState(temp_bundle); Intent intent = new Intent(this, MainActivity.class); intent.putExtra("bundle", temp_bundle); startActivity(intent); finish();
No se puede configurar el tema de la aplicación en tiempo de ejecución. Si desea cambiar el tema en todas partes en su aplicación, debe llamar al
SetTheme (resId)
Como una primera cosa en la actividad onCreate ().
P.ej:
@Override public void onCreate (Paquete savedInstanceState) {setTheme (resId)}
Si desea cambiar el tema de las actividades ya iniciadas, debe volver a crearlas.
Se trata de un problema conocido: https://code.google.com/p/android/issues/detail?id=3793
Usted tiene que cambiar el color de fondo manualmente, setTheme()
no lo cambiará.
- Servicio Android-Comunicación de 2 vías
- Android admob no mostrar en pantalla tamaño demasiado pequeño