gpt4 book ai didi

android - 如何使用定义的属性动态更改颜色

转载 作者:行者123 更新时间:2023-11-29 17:18:33 24 4
gpt4 key购买 nike

有两个主题,可以动态切换。

有一个 txtColor 属性定义在属性.xml

<attr name=“txtColor” format="reference" />

在themes.xml中,定义了不同主题下属性的颜色

<style name=“CustomLight" parent="AppTheme.Base">
<item name="txtColor”>#000000</item>

<style name=“CustomDark" parent="AppTheme.Base">
<item name="txtColor”>#ffffff</item>

在布局文件中,使用属性即可

android:textColor="?attr/txtColor"

但在尝试使用 txtColor 属性时出现异常

Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f010015
txtView.setTextColor(getResources().getColor(R.attr.txtColor));

问题:如何使用属性动态改变颜色?

最佳答案

首先属性格式应该是“color”

<attr name="txtColor" format="color"/>

然后你可以设置颜色:

int[] attrs = {R.attr.txtColor} ;
try { //getPackageManager() can throw an exeption
Activity activity = getActivity();
themeId = activity.getPackageManager().getActivityInfo(activity.getComponentName(), 0).theme;
TypedArray ta = activity.obtainStyledAttributes(themeId, attrs);
int color = ta.getColor(0, Color.BLACK); //I set Black as the default color
txtView.setTextColor(color);
ta.recycle();
} catch (NameNotFoundException e) {
e.printStackTrace();
}

关于android - 如何使用定义的属性动态更改颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37668672/

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