Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在布局替代列表选择器上设置背景_Android_Xml - Fatal编程技术网

Android 在布局替代列表选择器上设置背景

Android 在布局替代列表选择器上设置背景,android,xml,Android,Xml,因此,我有一个布局(作为ListView中的一行)和listSelector。在我向布局添加背景之前,此listSelector工作正常。我希望这个背景作为起始背景(并将随listSelector而改变)。但是,一旦我添加了背景,listSelector就不再工作,当我按下它时,我的布局也不会改变颜色(如预期的那样)。为什么会这样?谢谢 布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:androi

因此,我有一个布局(作为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>

实际上,
列表选择器仍然“工作”。但是,问题是项目视图是在它上面绘制的。因此,如果它具有不透明背景,则选择器将完全隐藏

有两种可能的解决方案:

  • 您可以使用
    drawSelectorOnTop
    ,它将在视图顶部绘制选择器。但是,只有当选择器是透明的(默认情况下不是透明的)时,这才有效
  • 使用
    StateListDrawable
    作为背景,当选择时,背景是透明的(因此,允许显示选择器)
查看Romain Guy的ListView谈话世界,他特别提到:

  • (幻灯片33)