如何在 state_pressed= "true" 时使形状的子文本视图为白色



这个形状是一个linearLayout的背景,我怎么能使任何textview内的linearLayout改变他们的文本颜色为白色期间的父选择器的statpressed =true ?请参阅我之前的问题以查看更多代码:Shape不显示

 <shape
            xmlns:android="http://schemas.android.com/apk/res/android">
            <solid
                android:color="#FFFFFF" />
            <stroke
                android:width="1dp"
                android:color="#AA000000" />
            <corners
                android:topLeftRadius="10dp"
                android:topRightRadius="10dp" />
            <gradient
                android:startColor="#6633cc"
                android:endColor="#00ccff"
                android:angle="270" />
        </shape> 

按下状态被传播到布局的所有子视图。您可以声明颜色的状态列表,类似于声明可绘制对象的状态列表。如果你在被按下的父元素中的文本上设置了状态列表颜色,则按下的状态也将应用于文本颜色。

编辑:引用的信息部分不正确,是别人编辑的:

使用:android:duplicateParentState="true"的TextView,也用途:android:颜色= " @color/myNewColor"

这个XML颜色文件放在项目的res/color目录中。

下面是AOSP中的一个例子,用于默认文本:https://android.googlesource.com/platform/frameworks/base/+/主/核心/res/res/颜色/primary_text_dark.xml

编辑:你用错误的信息编辑了我的答案。无论android:duplicateParentState设置如何,按下状态都会传播。

View.java, setPressed方法调用dispatchSetPressed:https://android.googlesource.com/platform/frameworks/base/+/主/core/java/android/视图/View.java # 8521

ViewGroup.java,重写的dispatchSetPressed方法设置所有子视图按下:https://android.googlesource.com/platform/frameworks/base/+/主/core/java/android/视图/ViewGroup.java # 3833

<TextView
android:textColor="#ffffff"
/>

最新更新