theme temas studio programacion personalizar para estilos ejemplos descargar activity android user-interface styles themes android-linearlayout

temas - styles android studio



Cómo establecer un tema diferente para un Diseño (3)

Establecí un tema predeterminado para toda la aplicación. Está definido en styles.xml de la siguiente manera:

<style name="DefaultTheme" parent="@android:style/Theme.Holo.Light"> <!-- Customization here --> </style>

También he definido un tema oscuro:

<style name="DarkTheme" parent="@android:style/Theme.Holo"> <!-- Customization here --> </style>

En el manifiesto, se declara el tema de la luz como el tema principal de la aplicación:

<application ... android:theme="@style/DefaultTheme" >

Ahora esto funciona bien, pero en una actividad, necesito establecer un tema diferente para un Diseño único. Algo como esto:

+--------------------------------------------------+ | Parent Linear layout (default theme) | | | | +------------------------------------+ +-------+ | | | | | | | | | Left linear layout | | | | | | (default theme) | | | | | | | | | | | | | | | | | | | | ·<----------- Right Linear Layout | | | | | | (Need it in dark theme) | | | | | | | | | | | | | +------------------------------------+ +-------+ | +--------------------------------------------------+

En el archivo xml de diseño, estoy tratando de establecer un tema para el niño más a la derecha, LinearLayout:

<LinearLayout style="@style/DarkTheme"> ...

Esperaría que esto funcionara bien, y aplicar el tema oscuro solo al diseño correcto (y sus vistas secundarias), pero no está funcionando. He intentado reemplazar el @style con un estilo incorporado de @android: inútilmente. Lo he probado en el editor de diseño y en el dispositivo / simulador real.

¿Es posible aplicar un tema o estilo personalizado a un solo diseño?


AFAIK no puedes aplicar un tema al diseño usando XML.

Sin embargo, puede usar ContextThemeWrapper() para aplicar el tema al crear el diseño mediante programación.

LinearLayout darkThemeLayout = new LinearLayout(new ContextThemeWrapper(context, R.style.DarkTheme));


Esto ahora es posible usando la propiedad android:theme en la vista y configurándola según el tema que desee. Tenga en cuenta que las vistas secundarias heredarán el tema de sus padres.


Con la biblioteca de soporte puede hacer:

app:theme="R.style.MyTheme"