所以,我有一个布局(作为ListView中的一行),我有listSelector。这个listSelector工作正常,直到我向布局添加背景。我想将此背景作为起始背景(并将随listSelector一起更改)。但是一旦我添加了背景,listSelector就不再有效了,当我按下它时,我的布局不会改变颜色(如预期的那样)。为什么是这样?感谢。
布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/listview_background"
android:listSelector="@drawable/listview_selector"
android:minHeight="140dip"
android:paddingLeft="5dp"
android:paddingRight="5dp" >
<ImageView
android:id="@+id/imgIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="2dip"
android:layout_toRightOf="@id/tvTime"
android:adjustViewBounds="true"
android:maxWidth="100dip"
android:padding="4dip"
android:scaleType="centerInside"
android:src="@drawable/ic_launcher" />
</RelativeLayout>
背景:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<!-- The border color -->
<solid android:color="#CCCCCC" />
</shape>
</item>
<item android:left="5dp" android:right="5dp" >
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<!-- The fill color-->
<solid android:color="#FFFFFF" />
</shape>
</item>
</layer-list>
列表选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/listview_bg_hover" android:state_pressed="true"/>
<item android:drawable="@drawable/listview_background" android:state_focused="true"/>
<item android:drawable="@drawable/listview_background"/>
</selector>
答案 0 :(得分:0)
实际上,listSelector
仍在&#34;工作&#34;。但是,问题是项目视图是在其上面绘制的。因此,如果它具有不透明背景,则选择器将完全隐藏。
有两种可能的解决方案:
drawSelectorOnTop
,它会在您的视图顶部绘制选择器。但是,这仅在选择器稍微透明(默认情况下不是)时才有效。StateListDrawable
作为透明的背景(因此,允许显示选择器)。查看Romain Guy的 List of ListView 谈话,他特别提到了这一点: