2016-05-28 17 views
0

私は現在のテーマ属性からボタンの色を与えようとしています:android.R.attr.colorPrimaryまたはR.attr.colorPrimary黄色を返すはずですが、いつも私に青い色を与えます代わりに!私はマニフェストにもテーマを設定しました。android.R.attr.colorPrimaryは常に私に間違った色を与えます

たとえば、ツールバーの背景色をandroid:background="?attr/colorPrimary"に設定すると、正しい色が得られますが、コードから設定した場合は正しく表示されません。

これは私が私のボタンの色を設定しようとしている方法です:

TypedValue typedValue = new TypedValue(); 
    App.getAppContex().getTheme().resolveAttribute(android.R.attr.colorPrimary, typedValue, true); 
    buttonColor = typedValue.data; 


    addButton.setText("SAVE"); 
    addButton.getBackground().setColorFilter(buttonColor, PorterDuff.Mode.MULTIPLY); 

これは

<style name="AppTheme_Yellow" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/primaryYellow</item> 
    <item name="colorPrimaryDark">@color/primary_darkYellow</item> 
    <item name="colorAccent">@color/accentYellow</item> 
    <item name="android:textColorPrimary">@color/primary_textYellow</item> 
    <item name="android:textColorSecondary">@color/secondary_textYellow</item> 
    <item name="android:icon">@color/iconsYellow</item> 
    <item name="actionOverflowButtonStyle">@style/OverFlowStyle</item> 
    <item name="popupMenuStyle">@style/popupMenuStyle</item> 

私の「イエロー」のテーマである「黄色」の後ろの色テーマ:

<color name="primaryYellow">#FFC107</color> 
<color name="primary_darkYellow">#FFA000</color> 
<color name="primary_lightYellow">#FFECB3</color> 
<color name="accentYellow">#607D8B</color> 
<color name="primary_textYellow">#212121</color> 
<color name="secondary_textYellow">#727272</color> 
<color name="iconsYellow">#212121</color> 
<color name="dividerYellow">#B6B6B6</color> 
+0

を? – AkashBhave

+0

ボタンを含むDialogFragmentクラスで – Muddz

+0

Nevermind私はただ解決しました!私は間違った文脈を使った!私は答えを投稿します。@ AkashBhave – Muddz

答えて

2

私が使用していたグローバルなアプリケーションコンテキストで問題が見つかりました。 App.getAppContex().getTheme().resolveAttribute(android.R.attr.colorPrimary, typedValue, true);

だから、1はgetActivity()またはUI Wigdetsがでinilitizedされるアクティビティのコンテキストを使用する必要があります。

あなたはこれらの値を設定している
getActivity().getTheme().resolveAttribute(android.R.attr.colorPrimary, typedValue, true); 
関連する問題