gpt4 book ai didi

android - 如何以编程方式获取 ?attr/value

转载 作者:太空宇宙 更新时间:2023-11-03 12:27:42 27 4
gpt4 key购买 nike

我正在尝试进行一些自定义 View 样式设置,但在从主题中正确选取样式属性时遇到了问题。

例如,我想获取主题 EditText 的文本颜色。

查看主题堆栈,您可以看到我的主题使用它来设置 EditText 的样式:

<style name="Base.V7.Widget.AppCompat.EditText" parent="android:Widget.EditText">
<item name="android:background">?attr/editTextBackground</item>
<item name="android:textColor">?attr/editTextColor</item>
<item name="android:textAppearance">?android:attr/textAppearanceMediumInverse</item>
</style>

我要找的是如何获得 ?attr/editTextColor

(又名,主题分配给“android:editTextColor”的值)

通过谷歌搜索,我找到了足够多的答案:

TypedArray a = mView.getContext().getTheme().obtainStyledAttributes(R.style.editTextStyle, new int[] {R.attr.editTextColor});
int color = a.getResourceId(0, 0);
a.recycle();

但我很确定我一定做错了,因为它总是显示为黑色而不是灰色?

最佳答案

@pskink 的评论:

    TypedValue value = new TypedValue();
getContext().getTheme().resolveAttribute(android.R.attr.editTextColor, value, true);
getView().setBackgroundColor(value.data);

将从当前分配给上下文的主题中提取属性。

谢谢@pskink!

关于android - 如何以编程方式获取 ?attr/value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45218271/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com