通过自定义选择器的 ListView 项目背景

2024-03-04

是否可以通过列表选择器将自定义背景应用于每个列表视图项目?

默认选择器指定@android:color/transparent为了state_focused="false"情况,但将其更改为某些自定义可绘制对象不会影响未选择的项目。罗曼·盖伊似乎建议在这个答案中 https://stackoverflow.com/questions/2217753/changing-background-color-of-listview-items-on-android/2218270#2218270这是可能的。

我目前通过在每个视图上使用自定义背景并在选择项目/聚焦/任何内容时隐藏它来实现相同的效果,以便显示选择器,但将所有这些都定义在一个地方会更优雅。

作为参考,这是我用来尝试使其工作的选择器:

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

    <item android:state_focused="false"
        android:drawable="@drawable/list_item_gradient" />

    <!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->
    <item android:state_focused="true" android:state_enabled="false"
        android:state_pressed="true"
        android:drawable="@drawable/list_selector_background_disabled" />
    <item android:state_focused="true" android:state_enabled="false"
        android:drawable="@drawable/list_selector_background_disabled" />

    <item android:state_focused="true" android:state_pressed="true"
        android:drawable="@drawable/list_selector_background_transition" />
    <item android:state_focused="false" android:state_pressed="true"
        android:drawable="@drawable/list_selector_background_transition" />

    <item android:state_focused="true"
        android:drawable="@drawable/list_selector_background_focus" />
        
</selector>

这就是我设置选择器的方式:

<ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:listSelector="@drawable/list_selector_background" />    

我自己也曾为此苦恼过,最后终于解决了。正如罗曼·盖伊暗示的那样,还有另一种状态,"android:state_selected",您必须使用。使用状态可绘制对象作为列表项的背景,并使用不同的状态可绘制对象listSelector您的清单中:

list_row_layout.xml:

<?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="?android:attr/listPreferredItemHeight"
    android:background="@drawable/listitem_background"
    >
...
</LinearLayout>

listitem_background.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/android:transparent" />
    <item android:drawable="@drawable/listitem_normal" />
</selector>

包含 ListView 的layout.xml:

...
<ListView 
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:listSelector="@drawable/listitem_selector"
   />
...

listitem_selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/listitem_pressed" />
    <item android:state_focused="true" android:drawable="@drawable/listitem_selected" />
</selector>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过自定义选择器的 ListView 项目背景 的相关文章

  • 如何在 Android 中更改 Drawable 的颜色?

    我正在开发一个 Android 应用程序 并且我有一个从源图像加载的可绘制对象 在此图像上 我想将所有白色像素转换为不同的颜色 例如蓝色 然后缓存生成的 Drawable 对象 以便稍后使用它 举例来说 假设我有一个 20x20 PNG 文
  • 如何替换 Android 中已弃用的 Bundle/Argument get(key) 调用

    我有以下扩展函数 允许我在应用程序活动和片段之间传递捆绑数据项 inline fun
  • 在 ChromeO 上安装未知来源的 apk

    我今天早上更新了我的 Chromebook Asus Flip 以获取 Play 商店 我的 Chromebook 安装了 M53dev 通道版本 它运作良好 我可以安装并运行从 Play 商店下载的 Android 应用程序 我想测试我的
  • Android 图表[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个项目 其中有一些图表 图形 刻度图 烛台图和范围图 但问题是 没有该图表的库 我有烛台图的
  • Android 中的列表(特别是 RecyclerView 和 CardView)如何工作

    请原谅我问这个问题 但我是 Android 开发新手 尽管我正在尝试了解developer android com 网站上的基础知识 但大多数示例 即使他们说它们是为 Android Studio 构建的 尚未设置为使用 Gradle 因此
  • Fragment 问题中的 ExpandableListView

    我正在尝试在片段中实现可扩展列表视图 没有错误出现 当我尝试记录两个的输出时List
  • Android 全屏对话框确认和拒绝操作

    材料设计中的全屏对话框应该在操作栏 工具栏上有确认和拒绝操作 我的问题是 我该怎么做 显示对话框 getFragmentManager beginTransaction add R id container new MyDialogFrag
  • 需要 Android webview window.open() 和 window.close() 的信息

    我正在开发一个安卓应用程序 这是我网站的 WebView 该网站包含一个弹出按钮 单击该按钮后 将打开一个新窗口并显示内容 该链接可以来自外部站点 然而 当我实现此操作时 新选项卡正在打开 之后它会弹出以打开浏览器 尽管在 Web 视图中打
  • Ionic 2 RC0 和 Angular 2 最新的 Android 构建错误(ngc:错误:静态解析符号值时遇到错误)

    当我使用构建android时出现错误ionic build android命令 ngc 错误 静态解析符号值时遇到错误 引用本地 非导出 符号 字典 考虑导出符号 原始 ts文件中的位置14 8 解析符号TRANSLATION PROVID
  • HMS 核心地图套件在我的 Android 应用程序上根本无法工作

    我正在尝试在我的应用程序中使用华为 HMS 地图套件 我对整体地图很陌生 无论是来自谷歌还是华为 我按照文档中的教程以及华为提供的代码实验室中的说明进行操作 并将我的代码在一起 但是当我运行地图活动时 什么也没有出现 我得到的只是一个空白活
  • 控制 OverlayItem 大小

    我正在构建一个在单个 ItemizedOverlay 中包含几十个 OverlayItems 的地图 我的地图设计为可以非常近距离地查看 大约缩放级别 18 并且 OverlayItems 彼此非常接近 地图放大时看起来不错 但是 如果用户
  • 在android中,将相机预览流到视图上

    我想将 Android 相机的相机预览流式传输到视图上 目的是随后使用 onDraw 将各种内容添加到视图中 我不需要随时实际捕捉图像 它不必是最高质量或每秒最大数量的帧 有谁知道如何做到这一点 将其添加到您的 xml 中
  • 如何将 Android 添加到 Phonegap 平台版本 3

    经过大量挖掘 我相信这个问题 https stackoverflow com questions 18423444 phonegap 3 doesnt work with andriod studio与我没有添加任何用于构建phonegap
  • 如何为我的 Android Market APK 创建证书?

    我想将我的第一个 APK 应用程序上传到 Android Market 但我收到了此错误 顺便说一下 在 stackoverflow 中搜索时并没有引导我找到正确的链接 市场不接受使用调试证书签名的 APK 创建有效期至少 50 年的新证书
  • 在运行时更改用作背景的 Drawable xml 内的形状纯色

    我有一个 Drawable xml 文件 background xml
  • Android SearchView 在启动时隐藏键盘

    我有一个小问题正在尝试解决 当我打开应用程序时 键盘会显示输入搜索视图的查询 不过 我只想在单击搜索视图时显示键盘 我该如何解决 Thanks 这对我有用 用于隐藏焦点的代码 searchView SearchView view findV
  • 如何在android中通过蓝牙向配对设备发送短信?

    在我的应用程序中 我想通过蓝牙发送和接收短信 我可以在列表视图中看到配对设备名称和地址的列表 但是当我尝试向配对设备发送文本时 什么也没有发生 在其他设备中没有收到文本 这是我向配对设备发送消息的代码 private void sendDa
  • Android 标记如何实现拖放?

    你好 我正在 Android 中开发 MapView 应用程序 我有三个标记 我希望稍后能够使用 Google Map API getlocation function 为了尝试一下 我想使用拖放功能移动标记 然后检查位置 任何人都可以通过
  • Android MulticastSocket.joinGroup 不会触发发送 IGMP 消息

    Code MulticastSocket s new MulticastSocket InetAddress addr InetAddress getByName 230 230 230 1 s joinGroup addr 在 Ubunt
  • Android GetPTLAFormat 上的 Phonegap 错误

    我们正在开发一个使用 jQuery 移动和电话间隙的应用程序 一切似乎都工作正常 但是当在连接的 Android 手机上运行应用程序时 我们在 Eclipse logcat 中看到大量类似这样的错误 0 GetPTLAFormat inva

随机推荐

  • 使用 gcc 编译 Python C 扩展时出现“...无法弄清楚...的架构类型”问题

    我刚刚从 Snow Leopard 升级到 Lion 我必须更新的旧 python c 扩展不想正确编译 我真的不知道在这里做什么 任何人都可以帮助我 使其编译正常吗 它在 Snow Leopard 中编译得很好 Home folder M
  • 正确从 QGraphicsScene/QgraphicsItemGroup/QGraphicsView 中删除项目

    我正在尝试使用可移动控制点绘制一个图QGraphicsView QGraphicsScene QGraphicsItemGroup 我遇到的问题是我找不到任何删除 删除该项目的方法 我的想法如下 我将有一个 QGraphicsView 在它
  • IIS 的 URL 重写规则替换每个页面中的文件夹路径

    我的网站项目有 300 多个页面 随着时间的推移 我们创建了一个安全的新服务器 该服务器专门用于网站中的所有图像 所以这是场景 当前图像的实现 在 aspx 中 在 css 中 http www mysite com assets comm
  • 朴素高斯预测概率仅返回 0 或 1

    我从 scikit sklearn 训练了 GaussianNB 模型 当我调用该方法时classifier predict proba它仅在新数据上返回 1 或 0 预计会返回预测正确与否的置信度百分比 我怀疑它能否对以前从未见过的新数据
  • Android 中将 ImageView 置于另一个 ImageView 中

    好吧 我必须将一个 ImageView 放入另一个 ImageView 中 它较小并且必须正好位于中心 我有两个针对不同屏幕分辨率缩放的图像 但我只能在一部手机上进行测试 我想知道是否使用 dpi 设置第二个图像的高度和宽度以适合我的屏幕分
  • 使用 FUSE 在 python 中创建临时文件

    我正在尝试使用 python fuse 编写程序 但无法记录文件 我的 file class 看起来像这样 class FuseFile object def init self path flags mode debug path deb
  • 获取 SWT 视图的大小

    我正在尝试确定 SWT 视图的大小 以便可以在插件中正确布局小部件 我正在使用 Java 8 运行 Eclipse Neon 我正在使用的代码如下 import org eclipse swt SWT import org eclipse
  • 实体框架:连接两个表和 where 子句

    我在使用实体框架和 PostgreSQL 时遇到问题 有人知道如何连接两个表并将第二个表用作 where 子句吗 我想在实体框架中执行的选择将在 SQL 中 SELECT ai id ai title ai description ai c
  • 如何包含绝对位置div?

    我有这个小提琴here http jsfiddle net 45atnh0u 这是下图 我需要实现的是让黑色容器根据里面的项目 项目是A B C 动态扩展 输出必须是 无需静态设置高度 我的html是 div class container
  • 相当于 gcc/g++ 中的 __declspec( bare )

    相当于什么 declspec naked in gcc g declspec naked 实际上用于声明一个没有任何尾声和序言的函数 在某些体系结构上 gcc 支持称为 naked 的属性 最近的gcc docs http gcc gnu
  • 如何修复拖放 JavaScript

    我创建了这个页面和脚本来使用 JavaScript HTML CSS 拖放对象 我聚焦对象跟随鼠标将鼠标悬停在页面项目上并将其放在容器上 但我的问题是拖放不起作用 这是代码 HTML div class container span spa
  • 按年份分割数据

    我有这样的数据 ID ATTRIBUTE START END 1 A 01 01 2000 15 03 2010 1 B 05 11 2001 06 02 2002 2 B 01 02 2002 08 05 2008 2 B 01 06 2
  • 运行 JUnit 测试时 Spring Security 不调用我的自定义身份验证过滤器

    我正在尝试按照以下方式使用 Spring Security 实现自定义无状态身份验证article http www future processing pl blog exploring spring boot and spring se
  • PHP 中正则表达式的解析器?

    我需要将正则表达式解析为 PHP 中的组件 我创建或执行正则表达式没有问题 但我想显示有关正则表达式的信息 例如列出捕获组 将重复字符附加到其目标 整个项目是一个 WordPress 插件 它提供了有关重写规则的信息 这些规则是具有替换模式
  • 从循环打印输出中删除最后一个逗号 JAVA

    我在循环打印输出时遇到了一个小问题 String str1 null for int row 0 row
  • 自动过滤单元格包含确切的特定数字

    我有一个列 其值类似于以下示例 Size 4 1 4 1 24 4 1 4 5 10 2 14 5 3 4 5 我需要设置一个过滤器来获取包含特定数字的单元格 例如 4 预期结果是 4 1 4 4 1 3 4 5 如果我使用通配符 4 作为
  • 尝试安装`genicam`的诗歌中的“无法找到安装候选人” - 如何调试?

    我刚刚使用新的 Windows 10 机器安装了诗歌install poetry py脚本 我刚刚将我的 python 应用程序依赖管理转换为pyproject toml with poetry 它适用于我的大多数依赖项 但不适用于geni
  • 旋转后平移手势行为不正确

    我有与下面链接类似的问题 为什么我在旋转后使用 平移 会使视图向相反方向移动 https stackoverflow com questions 11707001 why i use pan after rotae will make vi
  • Pandas 使用 0.21.0 对 FutureWarning 进行切片

    我试图选择数据帧子集的子集 仅选择一些列 然后对行进行过滤 df loc df a isin Apple Pear Mango a b f g 但是 我收到错误 Passing list likes to loc or with any m
  • 通过自定义选择器的 ListView 项目背景

    是否可以通过列表选择器将自定义背景应用于每个列表视图项目 默认选择器指定 android color transparent为了state focused false 情况 但将其更改为某些自定义可绘制对象不会影响未选择的项目 罗曼 盖伊似