Android: Aplicar diferentes temas a fragmentos de una actividad

Lo que quiero hacer:

Quiero que cada Fragmento de mi MainActivity utilice un tema diferente, de modo que la ActionBar tenga diferentes colores de fondo, dependiendo del Fragmento visible.

La situación:

He creado una MainActivity que utiliza las pestañas + Swipe Navegación. I Se han añadido 7 fichas (= 7 fragmentos). He creado un tema que debe aplicarse sólo al primer fragmento (fragment_main_1).

Aquí el Tema:

<resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="Blue" parent="android:Theme.Holo.Light"> <item name="android:actionBarStyle">@style/Blue.ActionBarStyle</item> </style> <style name="Blue.ActionBarStyle" parent="android:Widget.Holo.Light.ActionBar"> <item name="android:titleTextStyle">@style/Blue.ActionBar.TitleTextStyle</item> <item name="android:background">#33B5E5</item> </style> <style name="Blue.ActionBar.TitleTextStyle" parent="android:TextAppearance.Holo.Widget.ActionBar.Title"> <item name="android:textColor">#FFFFFF</item> </style> </resources> 

Después de crear más 6 temas, debería ser posible desplazarse a través de las pestañas mientras que la barra de acción cambia su color de fondo automáticamente.

Lo que no funcionó:

Añadiendo esas líneas (que encontré aquí en stackoverflow) al Fragment1.java:

 // create ContextThemeWrapper from the original Activity Context with the custom theme final Context contextThemeWrapper = new ContextThemeWrapper(getActivity(), R.style.Blue); // clone the inflater using the ContextThemeWrapper LayoutInflater localInflater = inflater.cloneInContext(contextThemeWrapper); // inflate the layout using the cloned inflater, not default inflater return localInflater.inflate(R.layout.fragment_main_1,container, false); 

Espero que pueda ayudarme 🙂 Gracias.

El tema de configuración en manifiesto se suele usar para Actividad.

Si desea establecer Tema para Fragmento, agregue el siguiente código en el onCreateView () del fragmento:

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // create ContextThemeWrapper from the original Activity Context with the custom theme final Context contextThemeWrapper = new ContextThemeWrapper(getActivity(), R.style.yourCustomTheme); // clone the inflater using the ContextThemeWrapper LayoutInflater localInflater = inflater.cloneInContext(contextThemeWrapper); // inflate the layout using the cloned inflater, not default inflater return localInflater.inflate(R.layout.yourLayout, container, false); } 

[ Fuente ]

Intente LayoutInflater localInflater = inflater.from(contextThemeWrapper); en lugar.

  • Problemas con burbujas de charla de diseño: TextView llena toda la pantalla
  • El diseñador me ha dado el PSD. Ahora, ¿cómo puedo crear mi diseño de Android?
  • Cómo agregar fragmentos de forma programática en relativelayout
  • ¿Cuál es una forma razonable de hacer este diseño?
  • No se puede cambiar el tamaño de RelativeLayout dentro de ScrollView para llenar toda la pantalla
  • Relativelayout dentro Scrollview no funciona
  • ¿Visión de lista de dos vías?
  • cómo usar z-index en android
  • Android - Cómo alinear un centro de imagen con respecto a la vista de texto
  • Cómo configurar TimePicker show con formato 24h
  • Diferencia: android: fondo y android: src?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.