アプリ全体にデフォルトのテーマを設定しました。styles.xml で次のように定義されています。
<style name="DefaultTheme" parent="@android:style/Theme.Holo.Light">
<!-- Customization here -->
</style>
ダークテーマも定義しました:
<style name="DarkTheme" parent="@android:style/Theme.Holo">
<!-- Customization here -->
</style>
マニフェストでは、アプリのメインテーマとしてライトテーマが宣言されています。
<application
...
android:theme="@style/DefaultTheme" >
これで問題なく動作しますが、アクティビティでは、単一のレイアウトに異なるテーマを設定する必要があります。次のようになります。
+--------------------------------------------------+
| Parent Linear layout (default theme) |
| |
| +------------------------------------+ +-------+ |
| | | | | |
| | Left linear layout | | | |
| | (default theme) | | | |
| | | | | |
| | | | | |
| | | | ·<----------- Right Linear Layout
| | | | | | (Need it in dark theme)
| | | | | |
| | | | | |
| +------------------------------------+ +-------+ |
+--------------------------------------------------+
レイアウト XML ファイルで、右端の子 LinearLayout のテーマを設定しようとしています。
<LinearLayout
style="@style/DarkTheme">
...
これは問題なく動作し、ダーク テーマが右側のレイアウト (およびその子ビュー) にのみ適用されると予想していましたが、動作しません。@style を組み込みの @android:style に置き換えようとしましたが、効果はありませんでした。レイアウト エディターと実際のデバイス/シミュレーターでこれをテストしました。
単一のレイアウトにカスタムテーマまたはスタイルを適用することは可能ですか?
ベストアンサー1
これは、android:theme
ビューのプロパティを使用して任意のテーマに設定することで可能になりました。子ビューは親のテーマを継承することに注意してください。