android - ListView 选中的项目可绘制

标签 android listview

我的 ListView 有问题。当我选择它时,我想将所选项目的背景更改为我拥有的自定义可绘制对象,但它不起作用。

我想在选中项中实现图片中的效果

<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"  >

最佳答案

在触摸模式下,没有选择或聚焦状态。

但是,您可以有一个选中状态(即使没有复选框)并使用它来在“选择”时更改属性。在您设置显示列表的 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> 

最后,将行 View 的背景设置为指向您的选择器文件:

<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”。您应该将其替换为该文件的实际名称。

关于android - ListView 选中的项目可绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10106413/

相关文章:

c# - 如何在嵌套 ListView 中编辑数据

android - 如何在 android 中关闭搜索 View 后重置 ListView ?

java - 有没有一种好方法可以用循环中的另一个线性来膨胀卡片 View 布局?

android - 大规模崩溃 org.altbeacon.beacon.service.ScanJob -> java.lang.RuntimeException : android. os.DeadSystemException

android - 如何将可扩展回收器 View 的父 View 设置为默认展开

android - 如何在 Horizo​​ntalScrollView 内的 LinearLayout 中正确显示按钮?

java - 微调器上的选定项目不起作用(ANDROID)

java - Android ListView 只显示第一项

android - 类扩展 ListActivity "whose id attribute is ' android.R.id.list'"

java - 如何删除android系统栏(页脚栏)