2 ssummeraw ssummeraw 于 2012.11.30 14:37 提问

Listview 中的ListSelector不能正常运行

我自定义了 listselector方法:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item 
        android:state_pressed="true"
        android:drawable="@drawable/bg_list_hover"></item>
    <item 
        android:state_focused="true"
        android:drawable="@drawable/bg_list"></item>
</selector>

在Listview中是这样的:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/bg_dasar" >
    <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="StoreCategory" 
                android:textSize="15sp"
                android:paddingLeft="10dip"
                android:paddingTop="10dip"
                android:paddingRight="10dip"
                android:textColor="@color/textcolor"/>

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="10dip"
        android:listSelector="@drawable/listselector">
    </ListView>

我的疑惑是当我不点击listview视图时,列表视图项就不会使用focused state的背景(@drawable/bg_list)。
请求大家的指点,谢谢!

3个回答

nana4ever
nana4ever   2012.11.30 17:43
已采纳

在listselector 改成这样:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item 
     android:state_pressed="true" 
     android:drawable="@drawable/bg_list_hover" />
 <item 
     android:drawable="@drawable/bg_list" />
</selector>

listview布局中:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/bg_dasar" >
    <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="StoreCategory" 
                android:textSize="15sp"
                android:paddingLeft="10dip"
                android:paddingTop="10dip"
                android:paddingRight="10dip"
                android:textColor="@color/textcolor"/>

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="10dip"
        **android:listSelector="@android:color/transparent"**>
    </ListView>

</LinearLayout>

把list selector添加到list item后台中:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="55dip"
    android:orientation="horizontal" 
    android:padding="15dip"
    android:gravity="center_vertical"
    **android:background="@drawable/listselector"**>

    <ImageView
        android:id="@+id/imageViewlogo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dip" />

    <TextView
        android:id="@+id/textViewcategory"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:textColor="@color/textcolor" 
        android:textSize="15sp"/>

</LinearLayout>
kechanghe0705
kechanghe0705   2012.12.03 10:31

样式没有问题,问题可能是出现在ListViewItem里面有Button,或者EditTExt这种可以获取focus的组件

suannai0314
suannai0314 详细的回答更能得到用户的青睐,而且更容易被采纳哦
5 年多之前 回复
cytown
cytown   2012.11.30 14:47
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item 
        android:state_pressed="true"
        android:drawable="@drawable/bg_list_hover"></item>
    <item 
        android:state_focused="true"
        android:drawable="@drawable/bg_list_focus"></item>
    <item 
        android:drawable="@drawable/bg_list"></item>
</selector>
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
【Android问题集】ListView的item的listSelector在第一次时不起作用
作者:Yogi前言:在项目调试中,碰到第一次显示该界面时,其listSelector不起作用的情况,后面则其作用了。背景介绍listSelector.xml的代码如下<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item
Listview之listSelector 属性
Listview  是我们很常用的控件,有时候需要自定义listview的item, 但是, 在开发过程中,会发现点击item时背景为橙色 , 是怎么回事呢?  研究之后发现只需要修改一下listSelector 属性值为  ,
listview的属性listselector使用解析
listview的属性listselector使用解析 一:概述         ListView的listSelector属性可以为列表的某个元素被点击时产生按下的效果。 二:问题:       某些情况下这个listSelector属性的效果会被覆盖,比如列表的Item为一个占满单元格的ImageView的时候,ImageView如果有内容那么listSelector的效果就会被挡住。
正确理解listView的listSelector
1.listSelector意思是说当Item被选中时,,Item小容器应该呈现的颜色 比如我设置listSeletor为灰色,而把item布局文件的颜色会覆盖这个颜色, 也就是item是内层颜色,listSeletor是外层颜色,这是理解的核心 android:listSelector="@color/gray4" >
Android ListView listSelector 自定义
android:layout_width="match_parent"         android:layout_height="244dp"         android:layout_marginTop="26dp"         android:listSelector="@drawable/xxx_list_selector">        
ListView设置Selector失效的问题
今天接了一个小需求:为listview添加灰色点击效果,要求在点击弹出底部popupwindow后,保持item的置灰效果,直到popupwindow消失时才恢复原状。但是在点击后Selector并没有生效,debug后知道是因为子view覆盖了listSelector属性导致的,所以在layout中添加drawSelectorOnTop属性并设置为true,最终解决问题。 效果图:
解决ListView设置listSelector无效的问题
ListView的listSelector属性可以为列表的item被点击时产生按下的效果,但是某些情况下这个listSelector属性的效果会被覆盖,导致设置listSelector并没有产生预期的效果,此时,需要设置drawSelectorOnTop属性为true,可解决:. android:drawSelectorOnTop="true"
listSelector: ListView点击后不让他高亮的办法
android:listSelector="@android:color/transparent" 背景也可以是图片:  android:listSelector="@drawable/select_bar"
Android中ListView中selector使用
在ListView中要实现item的选中,不能使用pressed,因为只有按下的时候调用selector,但是在松开时就会变会原来的默认状态。当然checked也不能使用,这个时候我们在selector中使用state_enabled。来看看item中一个TextView怎么设置点击选中<TextView android:id="@+id/tv_title" andr
ListView中selector的用法
1.方法一:在listview中配置android:listSelector="@drawable/xxx 或者在listview的item中添加属性android:background="@drawable/xxx" 2.方法二:Drawable drawable = getResources().getDrawable(R.drawable.xxx);   ListView.se