如何获取自定义主题的主题颜色?

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});

以上是关于如何获取自定义主题的主题颜色?的主要内容,如果未能解决你的问题,请参考以下文章

Typora设置自定义代码颜色

如何使用自定义主题更改默认文本颜色?

VS Code 自定义文件资源管理器窗口颜色主题

如何使用带有自定义主题变体的 vuetify 颜色道具

如何在角度材质中定义自定义主题以控制按钮文本的颜色?

如何使用 angular5 和 angular 材质创建自定义颜色主题