我的ListView有问题。当我选择它到我自己的自定义drawable时,我想更改所选项目的背景,但它不起作用。
我希望将此效果视为图像中的选择项
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"
android:drawable="@drawable/selected_item"/>
<item android:drawable="@android:color/transparent" />
</selector>
这是list_row的文本
<!-- this layout is used to view row of category list and resturant list -->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/txt_category_row"
android:gravity="center"
android:layout_width="match_parent"
android:textColor="@color/BLACK"
android:layout_height="55dp"
android:padding="10dp"
android:text="@string/hello"
android:layout_marginTop="5dp"
android:textAppearance="?android:attr/textAppearanceLarge" />
这就是ListView code.xml
:
<ListView android:id="@+id/list_category"
android:layout_alignParentLeft="true"
android:layout_height="fill_parent"
android:layout_width="184dp"
android:dividerHeight="2px"
android:background="@android:color/transparent"
android:cacheColorHint="@android:color/transparent"
android:layout_marginTop="5dp"
android:listSelector="@drawable/list_selector"
android:divider="@color/Gray" >
答案 0 :(得分:10)
在触控模式下,没有选定或聚焦状态。
但是,您可以进行检查状态(即使没有复选框),并使用它来更改“选择”时的属性。在您设置为显示列表的Java代码中,在定义listview后添加以下行:
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
然后在你的状态列表中,XML改变了这个:
android:state_selected="true"
到此:
android:state_activated="true"
所以现在你应该:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true"
android:drawable="@drawable/selected_item"/>
<item android:drawable="@android:color/transparent" />
</selector>
最后,将行视图的背景设置为指向选择器文件:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/txt_category_row"
android:gravity="center"
android:layout_width="match_parent"
android:textColor="@color/BLACK"
android:layout_height="55dp"
android:padding="10dp"
android:text="@string/hello"
android:layout_marginTop="5dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:background="@drawable/item_selector" />
您没有为州名单XML命名,所以我只使用了“item_selector”。您应该用实际上该文件的名称替换它。
答案 1 :(得分:1)
您应该使用CheckableFrameLayout作为列表项视图。你可以在这里找到它 - CheckableFrameLayout
您可以在那里看到,当您单击列表项时,它会将背景绘制更改为您想要的任何内容。
答案 2 :(得分:0)
答案 3 :(得分:-2)
dynamicListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
//arg1 will give you that view
arg1.setBackgroundColor(Color.BLUE);
}
});