为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

三国纷争 2023-05-24 16:14:38

我正在使用 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 让我使用的所有可能状态的组合,不用说,应用程序中显示的实际颜色不在我上面定义的颜色中。我错过了什么?


查看完整描述

1 回答

?
千巷猫影

TA贡献1669条经验 获得超7个赞

添加一个名为 such 的额外属性isSelected到Account类。


class Account {

    ... other attributes

    private boolean isSelected;

}

在:getView_AccountPickerViewAdapter


final Account myAccount = getItem(position);

if (myAccount.isSelected()) {

    // set selected background

} else {

    // set default background

}

当onItemClick列表视图isSelected被点击的账户项目设置为真时。


或者,对于另一种方法,请参阅此问题


查看完整回答
反对 回复 5天前
  • 1 回答
  • 0 关注
  • 5 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信