android.R.attr.colorPrimary一直给我错误的颜色

时间:2016-05-28 12:12:43

标签: android

我试图从我当前的主题属性中提供我的按钮颜色:android.R.attr.colorPrimaryR.attr.colorPrimary应返回黄色,但总是给我一个蓝色!我还在清单中设置了主题。

例如,使用android:background="?attr/colorPrimary"设置工具栏的backgroundcolor会给出正确的颜色,但如果从代码中设置,则不会。

这就是我尝试设置按钮颜色的方式:

    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>

&#34;黄色&#34;背后的颜色主题:

<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>

1 个答案:

答案 0 :(得分:3)

我在我使用的全局应用程序上下文中发现了问题。 App.getAppContex().getTheme().resolveAttribute(android.R.attr.colorPrimary, typedValue, true);

因此,必须使用获取UI Wigdets的活动的getActivity()或上下文:

getActivity().getTheme().resolveAttribute(android.R.attr.colorPrimary, typedValue, true);