gpt4 book ai didi

android - 使用 setTextColor() 以编程方式设置 Android TextView 文本颜色呈现 android :duplicateParentState invalid

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:21:49 28 4
gpt4 key购买 nike

我有一个简单文本项的 ListView 。这些项目中的 TextView 看起来像这样(它被包裹在 RelativeLayout 中):

<TextView
android:id="@+id/text_language_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:duplicateParentState="true"
android:textSize="16sp"
android:textStyle="bold" />

我想为文本使用以下颜色状态选择器,我称之为“dark_list_text_states.xml”:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="true" android:color="@android:color/white"/>
<item android:color="@color/dark_list_text"/>

</selector>

通常,当然,我可以将其设置为 xml 中的 android:textColor 属性,但在这种情况下,我需要以编程方式将一个特定项目设置为不同的颜色,使用此选择器(“blue_text_states.xml”):

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="true" android:color="@android:color/white"/>
<item android:color="@color/selected_blue"/>

</selector>

所以我在 Adapter 中设置了文本颜色(language_nameselected 是在代码前面定义的):

        TextView text_language_name = (TextView)view.findViewById(R.id.text_language_name);
if (text_language_name != null) {
text_language_name.setText(language_name);
int text_color = selected
? getResources().getColor(R.color.blue_text_states)
: getResources().getColor(R.color.dark_list_text_states);
text_language_name.setTextColor(text_color);
text_language_name.setDuplicateParentStateEnabled(true);
}

这工作正常,除了一个问题:单击项目时文本颜色不会改变。即使我在 setTextColor() 之后立即对项目调用 setDuplicateParentStateEnabled(true),该设置也会被完全忽略。

我已经通过注释掉设置文本颜色的 Java 代码并在 xml 中设置它来对此进行了测试,选择器工作正常。但是,如果我以编程方式设置 textColor,它就完全无法复制父状态。

有没有人见过这个?是否有解决方法,或者这只是我不得不忍受的 Android 错误?

最佳答案

好的,发现我的错误。我应该使用 getResources().getColorStateList() 而不是 getResources().getColor()。把这个留给犯同样错误的其他人。

关于android - 使用 setTextColor() 以编程方式设置 Android TextView 文本颜色呈现 android :duplicateParentState invalid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16094654/

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