34

アプリ全体のデフォルトのテーマを設定しました。これは、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" >

これで問題なく動作していますが、アクティビティでは、1 つのレイアウトに別のテーマを設定する必要があります。このようなもの:

    +--------------------------------------------------+
    |         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 つのレイアウトに適用することはできますか?

4

5 に答える 5

32

これはandroid:theme、ビューのプロパティを使用して、好きなテーマに設定することで可能になりました。子ビューは親のテーマを継承することに注意してください。

于 2015-07-17T03:54:11.943 に答える
12

ContextThemeWrapper()プログラムでレイアウトを作成するときにテーマを適用するために使用できます。

LinearLayout darkThemeLayout = new LinearLayout(new ContextThemeWrapper(context, R.style.DarkTheme));
于 2014-07-04T21:23:21.090 に答える