我在使用此 ListView 时遇到了一个小问题:
<ListView android:id="@+id/employees_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="2dp"
android:paddingRight="1dp"
android:background="@drawable/borderlist"
android:choiceMode="singleChoice"
android:listSelector="#48ad82"
android:layout_below="@id/employees_header">
</ListView>
其中包含此布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/row_employee"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:paddingTop="13dp"
android:paddingBottom="13dp"
android:descendantFocusability="blocksDescendants">
<RadioButton android:id="@+id/radio_employee"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:focusable="false"/>
<TextView
android:id="@+id/text_employeename"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_toRightOf="@id/radio_employee"
android:layout_marginTop="3dp"
android:layout_marginLeft="5dp"
android:focusable="false" />
</RelativeLayout>
EDIT2:尽可能简化问题:
当我选择列表中的一个元素时,它会由于 android:listSelector 的原因而改变颜色。当我在代码中调用notifyDataSetChanged()时,该颜色会消失,直到我向上或向下滚动列表。怎样才能让颜色不消失?
有人回答使用这样的选择器:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true">
<shape>
<solid android:color="#48ad82" />
</shape>
</item>
<item>
<shape>
<solid android:color="#unselectedcolor" />
</shape>
</item>
</selector>
我将此选择器设置为背景。它根本不起作用。当我选择元素时,它们的颜色甚至没有改变
编辑1:要指定,当我滚动列表时,颜色会重新出现。
最佳答案
将此代码添加到您的RelativeLayout:
android:background="@drawable/list_item_selector"
将此文件添加到您的可绘制文件夹中
list_item_selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true">
<shape>
<solid android:color="#48ad82" />
</shape>
</item>
<item>
<shape>
<solid android:color="#unselectedcolor" />
</shape>
</item>
</selector>
编辑:并从 ListView 中删除 android:listSelector="#48ad82"
关于java - android:listSelector 在notifyDataSetChanged()之后,颜色消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17606775/