【问题标题】:Android background selector and textcolor selector conflictAndroid背景选择器和textcolor选择器冲突
【发布时间】:2016-03-18 03:22:39
【问题描述】:

我给一个ViewGroup设置了一个背景选择器,这个ViewGroup有一个子TextView,我给textColor设置了一个选择器,然后我按下这个ViewGroup,TextView'textColor在按下状态下消失了。

【问题讨论】:

    标签: android selector textview android-selector android-viewgroup


    【解决方案1】:

    试试这个...

    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.结果

    正常状态:

    按下状态:

    【讨论】:

    • 非常感谢,我已经按照你的方法解决了。
    【解决方案2】:

    这是因为你的textview颜色与选择器文件“selector_viewgroup_child_textcolor.xml”有关,你已经设置了按下状态和正常状态,如果你想让textview的颜色不可变,请确保你的textcolor不引用任何选择器文件

    【讨论】:

      猜你喜欢
      • 2014-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-11
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      相关资源
      最近更新 更多