レイアウトに別のテーマを設定する方法 質問する

レイアウトに別のテーマを設定する方法 質問する

アプリ全体にデフォルトのテーマを設定しました。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ビューのプロパティを使用して任意のテーマに設定することで可能になりました。子ビューは親のテーマを継承することに注意してください。

おすすめ記事