Android:使用带有复杂视图的itemSelector设置视图背景

时间:2017-05-02 17:31:41

标签: android listview android-selector

我们在ListView上有一个相对简单的Android项目模板

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:background="@android:drawable/list_selector_background">
  <!--Encounter Type and Start-->
  <RelativeLayout
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:background="@color/mid_grey"
      android:paddingTop="12dp"
      android:paddingRight="24dp"
      android:paddingBottom="12dp"
      android:paddingLeft="24dp">
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:textStyle="bold"
        android:textSize="@dimen/text_size_large"
        android:text="Main Item Heading"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="10:45"
        android:layout_toLeftOf="@+id/startTimeRelative"
        android:textColor="@color/grey1"
        android:textSize="@dimen/text_size_large" />
    <TextView
        android:id="@+id/startTimeRelative"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="12sp"
        android:layout_alignParentRight="true"
        android:text="Today"
        android:textColor="@color/grey1"
        android:textSize="@dimen/text_size_large" />
  </RelativeLayout>
  <!--Patient Name and Avatar-->
  <RelativeLayout
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:paddingTop="8dp"
      android:paddingRight="24dp"
      android:paddingBottom="8dp"
      android:paddingLeft="24dp">
    <ImageView
        android:id="@+id/patientAvatar"
        android:layout_alignParentLeft="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="16dp"
        android:scaleType="fitXY"
        android:src="@drawable/patient_avatar" />
    <LinearLayout
        android:layout_toRightOf="@+id/patientAvatar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
      <TextView
          android:id="@+id/patientname"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:text="Subsection Heading"
          android:textColor="#000000"
          android:textSize="@dimen/text_size_large"
          android:textStyle="bold"
          android:ellipsize="end"
          android:maxLines="1" />
    </LinearLayout>
  </RelativeLayout>
  <!--</LinearLayout>-->
</LinearLayout>

显示此布局

enter image description here

我想在按下或选择项目时设置项目的背景。我试图通过将项目的背景设置为自定义项目选择器来实现此目的

android:background="@android:drawable/list_selector_background"

is是选择器xml

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

问题是因为我在项目中设置了视图的背景颜色,而选择器没有按预期显示。我删除了一种内部颜色(用于&#34; Subsection Heading&#34;在屏幕截图中)并将其设置为Listview的颜色。这意味着当在模板的下半部分按下项目时蓝色显示,如此屏幕截图所示

enter image description here

所有Android示例显示项目选择器使用具有一种或没有背景颜色的简单项目布局。

如果未选择儿童视图中的一个或多个背景颜色,如何设置整个项目的背景?

我已经看过在ListView上设置drawSelectorOnTop但是没有帮助

0 个答案:

没有答案