使用布局选择器更改其子项的属性

Uma*_*shi 9 android listview

默认情况下,ListView改变背景颜色为橙色被按下,也是TextColorTextView变为白色/黑色.通过在应用选择ListView,我们可以设置背景颜色为按下状态,但我们可以还定义项TextColorTextView同一选择内的项目/布局里面?如果是这样,那怎么样?

Pau*_*sma 12

Amy88的答案解决了这个问题,但没有专门解决改变ViewGroup的孩子的属性问题.

假设您有一个可点击的按钮LinearLayout,TextView它应该在按下时改变颜色.关键是要android:duplicateParentState="true"在子视图上使用:

<LinearLayout
    android:duplicateParentState="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:duplicateParentState="true"
        android:text="@string/hello_world"
        android:textColor="@drawable/text_selector" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

您可以在Amy88的答案中指定选择器.


Kan*_*esh 7

如果要为ListAdapter定义自定义布局文件,请将自定义布局中TextView的文本颜色设置为xml.此布局应放在可绘制的资源文件夹中(创建一个可绘制的文件夹并将text_selector.xml放在其中).

text_selector.xml:

<item android:state_selected="true" android:color="@android:color/black"/>
<item android:state_focused="true" android:color="@android:color/black"/>
<item android:state_pressed="true" android:color="@android:color/black"/>
<item android:color="@android:color/white"/>
Run Code Online (Sandbox Code Playgroud)

要设置文本颜色,请使用:android:textColor ="@ drawable/text_selector"

上面的示例xml默认情况下将文本颜色设置为白色,并在聚焦,选择或按下列表项时将文本颜色设置为黑色.