ListView项目选择状态不起作用

aro*_*ero 21 android listview android-layout

所以我有一个ListView,我想改变每个项目背景和文本的颜色.此ListView位于ListFragment中.我的代码膨胀了布局,onCreateView并膨胀了每个项目的布局newView.

该android:state_pressed="true"工作正常,每当我在一个项目按背景变为彩色.但是当选择一个项目时,bg颜色或文本颜色都没有变化,即使我已经android:state_selected="true"在选择器中定义了一个项目.

编辑:我正在使用SDK级别11(Android 3.0)和摩托罗拉Xoom.

列表片段布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

列表项布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="25dp"
    android:background="@drawable/list_item_bg_selector">
    <TextView android:id="@+id/form_title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="@dimen/text_size_xlarge"
        android:textStyle="bold"
        android:textColor="@drawable/list_item_text_selector" />
    <TextView android:id="@+id/form_subtitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="@dimen/text_size_medium"
        android:textStyle="normal"
        android:layout_marginTop="5dp"
        android:textColor="@drawable/list_item_text_selector" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

背景选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item 
        android:state_pressed="true"
        android:drawable="@color/white" />
    <item
        android:state_selected="true"
        android:drawable="@drawable/list_item_bg_selected" />
    <item 
        android:drawable="@color/list_bg" />
</selector>
Run Code Online (Sandbox Code Playgroud)

文字选择器:

<?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/white" />
    <item 
        android:drawable="@color/list_text_blue" />
</selector>
Run Code Online (Sandbox Code Playgroud)

aro*_*ero 46

答案是使用android:state_activated="true"状态而不是"选定"状态.更多相关信息:ListFragment项目选定背景

  • android:state_activated仅适用于API v11及更多版本 (9认同)