当state_pressed =" true"时,如何使形状的子TextView变白?

时间:2011-07-13 02:35:09

标签: android android-layout

此形状是linearLayout的背景,如何在LinearLayout中使任何TextView在父选择器的statePressed = true期间将其文本颜色更改为白色?另请参阅我之前的问题以查看更多代码:Shape does not show

 <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> 

2 个答案:

答案 0 :(得分:4)

压缩状态传播到布局的所有子视图。您可以声明状态颜色列表,类似于声明可绘制状态列表的方式。如果您在按下的父级内的文本上设置状态列表颜色,则按下的状态也将应用于文本颜色。

编辑:引用的信息部分不正确,并由其他人编辑:

  

USE:对于TextView,android:duplicateParentState =“true”   使用:android:color =“@ color / myNewColor”

此XML颜色文件位于项目的res / color目录中。

以下是AOSP的一个示例,用于默认文本: https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/color/primary_text_dark.xml

编辑:您使用不正确的信息编辑了我的答案。无论android:duplicateParentState设置如何,都会传播按下状态。

View.java,setPressed方法调用dispatchSetPressedhttps://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/View.java#8521

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

答案 1 :(得分:-1)

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