【发布时间】:2021-02-23 00:02:59
【问题描述】:
我有一个自定义的 viewholder 类,它从构造函数中的 android 命名空间中的属性获取颜色:
int mDefaultPrimaryColor = GetColor(context, android.R.attr.colorPrimary);
....
public static int getColor(Context context, int attr)
{
TypedArray ta = context.obtainStyledAttributes(new int[]{attr});
int color = ta.getColor(0, 0);
ta.recycle();
return color;
}
稍后在bind方法上最终设置颜色:
someTextView.setTextColor(mDefaultPrimaryColor);
我想通过 XML 覆盖我的应用程序中的 android.R.attr.colorPrimary 值,而不修改 Java 代码,以便该值与 SDK 中设置的值不同。
我试图在我的主题.xml 中覆盖这个值:
<resources>
<style name="MyAppTheme" parent="@android:Theme.DeviceDefault.NoActionBar">
<item name="android:colorPrimary">@color/my_color</item>
</style>
</resources>
但是,我在 Android 模拟器中看到的颜色不是我为 my_color 设置的颜色。有没有办法用我在我的应用程序中定义的颜色覆盖 android.R.attr.colorPrimary?我做错了什么?
编辑:主题已在清单文件中设置。更新了代码 sn-p 更准确。
【问题讨论】:
标签: android android-layout android-resources android-theme android-styles