如何获取自定义主题的主题颜色?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取自定义主题的主题颜色?相关的知识,希望对你有一定的参考价值。
我想获得我在我的应用程序中定义的按钮主题的colorAccent颜色。我创建了一个自定义按钮类。但是,如果我使用
TypedValue typedValue = new TypedValue();
TypedArray a = context.obtainStyledAttributes(typedValue.data, new int[] {
R.attr.colorAccent });
int color = a.getColor(0, 0);
我得到应用程序的默认colorAccent而不是我为我的按钮定义的那个。如何获得按钮主题的颜色?
答案
修复需要一段时间来弄明白,它实际上是双重的:
首先在自定义主题中,我必须使用colorAccent
而不是android:colorAccent
,否则它会使程序混淆我是否定义了本地或应用程序级别的值。
一旦我解决了这个问题,下面的代码变体就可以了。 (而不是使用似乎属于应用程序的typedValue.data
,我使用attrs
,它实际上属于按钮并通过构造函数传入)。
TypedArray a = context.obtainStyledAttributes(attrs, new int[] {R.attr.colorAccent});
以上是关于如何获取自定义主题的主题颜色?的主要内容,如果未能解决你的问题,请参考以下文章