2013-08-29 7 views
21

アプリ全体のデフォルトテーマを設定しました。これは次のように定義されていますの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"> 
    ... 

私はこれがうまく動作するために、そして適用を期待したいです暗いテーマは正しいレイアウト(およびその子ビュー)にしか表示されませんが、動作しません。私は、@スタイルを組み込みの@android:スタイルを無駄に置き換えることを試みました。私はレイアウトエディタと実際のデバイス/シミュレータでこれをテストしました。

カスタムテーマまたはスタイルを1つのレイアウトに適用できますか?

+0

私はそれが古い質問です知っているが、あなたはそれに答えを見つけることができましたか? –

答えて

20

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

+1

Android Marshmallow現在 –

12

AFAIK XMLを使用してレイアウトにテーマを適用することはできません。

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

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

app:theme="R.style.MyTheme" 
関連する問題