2016-02-06 7 views
8

私は1次、1次暗、1次光とアクセントの色が異なる2つのテーマを定義しました。Android:drawable xmlで現在のテーマの色を使用する方法は?

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/primary</item> 
    <item name="colorPrimaryDark">@color/primary_dark</item> 
    <item name="colorAccent">@color/accent</item> 
</style> 

<style name="AppTheme2" parent="AppTheme"> 
    <item name="colorPrimary">@color/primary_2</item> 
    <item name="colorPrimaryDark">@color/primary_dark_2</item> 
    <item name="colorAccent">@color/accent_2</item> 
</style> 

AppThemeは、その後、私は具体的な活動にAppTheme2を設定<application/> のデフォルトです。

私はcolors.xml

で定義されたAppThemeの同じ原色を使用している描画可能ファイル、XMLで描画可能は、両方のテーマから多くの活動に使用されるので、AppTheme2があるとき、私は別の色を参照してくださいされています。 ドロアブルに現在のアクティビティの現在のテーマの色を使用させる方法はありますか?

答えて

16

あなたは現在使用されたテーマから色を取得するには、この属性を使用することができます。

android:color="?colorPrimary" 

これが唯一のAndroid 5.0以上で可能です。

+1

Android 4でこれを行うにはとにかくありますか?またはこれをプログロマチックにする必要がありますか? –

+0

それのように見える... https://developer.android.com/training/material/compatibility.html –

+1

悲しいことに、私のxamarinプロジェクトでは、gradleを変更した後に奇妙な例外が発生する –

関連する問題