【问题标题】:How to highlight pressed items in a ListView?如何在 ListView 中突出显示按下的项目?
【发布时间】:2017-01-30 21:34:21
【问题描述】:

我正在使用下面的这段代码,但它不能正常工作:如果我选择一个项目,背景就会改变。但是如果我只关注项目而不选择它,背景也会发生变化。为什么?

添加到我的列表视图:

android:listSelector="@drawable/bg_key"

@drawable/bg_key

<?xml version="1.0" encoding="utf-8"?>
<selector
    android:id="@+id/myselector"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_activated="false"
        android:drawable="@color/activated_color" />

</selector>

color.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="activated_color">#1d1d1d</color>
</resources>

【问题讨论】:

  • 也许使用pressedfocused 状态?
  • @Rotwang 我添加了 state_pressed="true" state_focused="false" 和 view.setPressed(true);在 onItemClick 方法中,但它仍然不起作用
  • Added to my listview... 不是按项目选择吗?
  • @Rotwang 这是一个列表选择器

标签: android android-layout listview


【解决方案1】:

您可以使用以下方法突出显示/为列表项提供涟漪效果:

在您的可绘制对象中创建一个选择器 item_ripple.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true">
        <shape>
            <solid android:color="@color/activated_color"></solid>
        </shape>
    </item>

    <item >
        <shape>
            <solid android:color="@android:color/transparent"></solid>
        </shape>
    </item>

</selector>

在你的 drawable-v21 中创建一个选择器 item_ripple.xml

<?xml version="1.0" encoding="utf-8"?>
<ripple
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/activated_color">

    <item
        android:id="@android:id/mask"
        android:drawable="@android:color/white" />
</ripple>

您需要将这些选择器添加为项目布局的背景:

android:background="@drawable/item_ripple"

【讨论】:

  • drawable-v21 是什么?
  • 在你的 res 文件夹中新建一个目录,命名为 drawable-v21。这表示如果当前操作系统的 API 版本是
【解决方案2】:

您可以在选择器文件中使用按下状态

/drawable/list_selector.xml

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

<item android:drawable="@android:color/holo_red_light" android:state_pressed="true"/>

</selector>

然后在您的 listView 中设置以下属性

android:listSelector="@drawable/list_selector"

【讨论】:

    猜你喜欢
    • 2012-01-05
    • 2013-02-04
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多