Necesitará al menos 2 estilos, es mejor heredar de los estilos base, p. Ej. Theme.Material
variantes, o si usa appcompat
entonces Theme.AppCompat
variantes. En cada estilo se anulan los valores como los colores, los elementos extraíbles, etc. con valores específicos del tema.
valores/styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- original theme attributes -->
...
<item name="android:textColorPrimary">#FFFFFF</item>
</style>
<style name="AppTheme.Dark" parent="Theme.AppCompat">
<!-- alternative theme attributes -->
...
<item name="android:textColorPrimary">#000000</item>
</style>
esto será suficiente si sólo utiliza marco o appcompat
atributos (por ejemplo colorAccent
, android:textColorPrimary
etc) en sus diseños. Pero si necesita sus propios atributos (por ejemplo, un dibujable con un color diferente según el tema), deberá definir custom attributes.
values / attrs.xml
<attr name="themedMenuStoryDrawable" format="reference" />
<attr name="themedMenuCommentDrawable" format="reference" />
...
especificar valores de temas específicos para sus atributos personalizados:
valores/styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- original theme attributes -->
...
<item name="themedMenuStoryDrawable">@drawable/ic_subject_white_24dp</item>
<item name="themedMenuCommentDrawable">@drawable/ic_mode_comment_white_24dp</item>
</style>
<style name="AppTheme.Dark" parent="Theme.AppCompat">
<!-- alternative theme attributes -->
...
<item name="themedMenuStoryDrawable">@drawable/ic_subject_black_24dp</item>
<item name="themedMenuCommentDrawable">@drawable/ic_mode_comment_black_24dp</item>
</style>
A continuación, se refieren a su atributos personalizados con ?attr/
prefijo en los diseños, los menús etc .:
menu/my_menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@id/menu_comment"
android:icon="?attr/themedMenuCommentDrawable" />
<item android:id="@id/menu_story"
android:icon="?attr/themedMenuStoryDrawable" />
</menu>
Salida my blog post para la guía completa.
Wow esto es exactamente lo que estoy tratando de hacer en este momento. – coolcool1994