【发布时间】:2016-03-18 03:22:39
【问题描述】:
我给一个ViewGroup设置了一个背景选择器,这个ViewGroup有一个子TextView,我给textColor设置了一个选择器,然后我按下这个ViewGroup,TextView'textColor在按下状态下消失了。
【问题讨论】:
标签: android selector textview android-selector android-viewgroup
我给一个ViewGroup设置了一个背景选择器,这个ViewGroup有一个子TextView,我给textColor设置了一个选择器,然后我按下这个ViewGroup,TextView'textColor在按下状态下消失了。
【问题讨论】:
标签: android selector textview android-selector android-viewgroup
试试这个...
1.为 ViewGroup 创建背景可绘制对象
1.a.颜色资源: (colors.xml)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="blue_grey_200">#B0BEC5</color>
</resources>
1.b. ViewGroup 正常状态: (drawable_viewgroup_normal.xml)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@android:color/transparent" />
<stroke
android:width="1dp"
android:color="@color/blue_grey_200" />
</shape>
1.c. ViewGroup 按下状态: (drawable_viewgroup_press.xml)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/blue_grey_200" />
<stroke
android:width="0.7dp"
android:color="@color/blue_grey_200" />
</shape>
1.d。 ViewGroup 选择器背景: (selector_viewgroup.xml)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/drawable_viewgroup_press" android:state_pressed="true"/>
<item android:drawable="@drawable/drawable_viewgroup_press" android:state_focused="true"/>
<item android:drawable="@drawable/drawable_viewgroup_normal"/>
</selector>
2。为 ViewGroup 的子项(TextView)创建选择器文本颜色 selector_viewgroup_child_textcolor.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="false" android:color="@color/colorAccent"/>
<item android:state_focused="true" android:state_pressed="true" android:color="@android:color/white"/>
<item android:state_focused="false" android:state_pressed="true" android:color="@android:color/white"/>
<item android:color="@color/colorAccent"/>
</selector>
3.将选择器可绘制对象应用于 ViewGroup 及其子项
<LinearLayout
android:id="@+id/l1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/selector_viewgroup"
android:clickable="true"
android:padding="@dimen/margin8">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Hello World!"
android:textColor="@drawable/selector_viewgroup_child_textcolor" />
</LinearLayout>
4.结果
正常状态:
按下状态:
【讨论】:
这是因为你的textview颜色与选择器文件“selector_viewgroup_child_textcolor.xml”有关,你已经设置了按下状态和正常状态,如果你想让textview的颜色不可变,请确保你的textcolor不引用任何选择器文件
【讨论】: