ListView.setSelector(...) 不会将正确的背景颜色应用于所选项目

我正在使用 ListViewsetSelector(...)来更改所选项目的背景颜色,虽然颜色确实发生了变化,但它会选择一种默认颜色,而不是我想要的颜色。


我想创建一个 ListView ,一次只允许选择一个项目。(几乎)一切正常,但无论我尝试什么,所选项目总是以默认颜色着色。这是我的代码:


列表显示:


<android.support.constraint.ConstraintLayout

    android:id="@+id/account_picker_layout"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:background="@drawable/rounded_corner_button" >


    <ListView

        android:id="@+id/account_picker_list"

        android:layout_width="0dp"

        android:layout_height="0dp"

        android:background="@drawable/account_picker_list_corner"

        android:backgroundTint="@color/white"

        android:choiceMode="singleChoice"

        android:listSelector="@drawable/selection_effect"

        app:layout_constraintBottom_toTopOf="@+id/account_picker_divider2"

        app:layout_constraintEnd_toEndOf="parent"

        app:layout_constraintStart_toStartOf="parent"

        app:layout_constraintTop_toTopOf="parent">


    </ListView>


    [...]

</android.support.constraint.ConstraintLayout>

选择效果.xml:


<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

自定义 ListView 适配器仅实现getView(...)背景颜色,不会以任何方式更改背景颜色。从 中的语句可以看出selection_effect.xml,我已经尝试了 android 让我使用的所有可能状态的组合,不用说,应用程序中显示的实际颜色不在我上面定义的颜色中。我错过了什么?


三国纷争
浏览 79回答 1
1回答

千巷猫影

添加一个名为 such 的额外属性isSelected到Account类。class Account {    ... other attributes    private boolean isSelected;}在:getView_AccountPickerViewAdapterfinal Account myAccount = getItem(position);if (myAccount.isSelected()) {    // set selected background} else {    // set default background}当onItemClick列表视图isSelected被点击的账户项目设置为真时。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java