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.
- Trabajar con imágenes en el desarrollo de aplicaciones para Android
- Cómo redondear la esquina de un lado de textview en android
- Biblioteca de diseño de Android: SwipeRefreshLayout no detecta el desplazamiento sobre CollapsingToolbarLayout
- Cómo construir un teclado de sugerencias de diseño en Android
- ¿Cómo comprobar el tipo de un widget de vista?
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.
- ¿Dónde puedo ver el styles.xml por defecto en Android?
- EditText añadido no es un TextInputEditText. Por favor, cambie a usar esa clase en su lugar
- Establecer indicio de EditText en TextInputLayout a multilínea?
- Atributo XML de la contraseña de Android: desaprobado
- Cómo crear un efecto de recuento para un textView en Android
- Android obtener actividad devuelve null
- Ver movido pero aún en la esquina superior izquierda
- Crear diseño de forma programática en android - tema
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.
- Android: Edittext con centro de gravedad que no funciona en el dispositivo
- ¿Puede un recurso selector utilizar un color definido en un estilo?