列表视图设置自定义波纹选择器

2023-12-28

我尝试在以下条件下在 Lollipop 上使用列表视图控件:

  1. 主题类型是默认的Theme.Material(深色主题)。
  2. 列表视图包含在具有白色背景的较大布局内。
  3. 列表视图应该有一个以白色背景出现的列表选择器。

注意:我被迫使用自定义列表选择器颜色,因为如果我使用白色背景,深色材料主题选择器将使用主题的 colorControlHighlight 颜色作为波纹,即 40ffffff,并且不会显示。

我首先尝试了以下方法:

布局 XML

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:background="@android:color/white" >

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <ListView
        android:id="@+id/list_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:listSelector="@drawable/list_selector" />

</LinearLayout>

列表选择器 xml

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="#ff0000" >

</ripple>

和列表视图行 xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:gravity="center_vertical"
    android:orientation="horizontal"
    tools:ignore="UseCompoundDrawables" >

    <ImageView
        android:id="@+id/list_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/list_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

我期望看到的是,当我选择一个项目时,该项目被选择时带有颜色为 #ff0000 的波纹。然而,这就是我最终看到的:

我所希望的在某种程度上接近这种行为 - 但仅限于选定的列表行!我究竟做错了什么?

谢谢, 扎克


您正在使用无界波纹,例如没有内容或遮罩层的波纹,因此波纹投影到其父 ListView 的背景上。您应该设置一个遮罩层来约束波纹边界。

res/drawable/my_list_selector.xml:

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

列表视图设置自定义波纹选择器 的相关文章

随机推荐

  • 如何在课堂上支持 println?

    我自己制作的类需要支持什么才能println 打印它 例如 我有 public class A 应该对哪些方法进行分类A必须让这段代码工作吗 也许是这样的 public static void main A a new A System o
  • 使用 setRequestedConfiguration 后,不会调用 onConfigurationChanged

    我已经设置了活动来处理配置更改并且它有效 这意味着onConfigurationChanged 当方向改变时被调用 该活动有一个按钮可以显式更改方向 点击后 它调用了setRequestedOrientation ActivityInfo
  • React + webpack:“process.env”未定义

    我正在尝试使用 webpack 在我们的网站上运行热开发服务器 该网站使用 ReactJS 其中包含以下代码 if production process env NODE ENV etc 当不运行热插拔时 它没问题 但使用热插拔时 它会运行
  • 文件字段 - 追加文件列表

    我创建了一个简单的文件字段
  • 为什么 matplotlib 标签“fontsize”不起作用?

    我使用了以下函数 但标签尺寸没有改变 axe set xlabel R 1 m nm 1 axe xaxis label set size 18 axe set ylabel E f l z eV nm fontsize 40 axd se
  • 在 mac 包中嵌入字体

    我有一个正在编写的程序 我想使用一种漂亮的字体 我可以将我的字体嵌入到我的包中并从那里使用它吗 我的代码 NSMutableAttributedString recOf recOf NSMutableAttributedString all
  • 从存储库中的现有 YML 文件创建新管道(Azure Pipelines)

    通常 我通过 Azure DevOps 门户创建新的构建管道 然后 编辑将引导我完成选择项目源 存储库和模板的步骤 之后 我可以选择创建新分支或直接提交到主分支 然而 这一次 我有一个现有的azure pipelines yml文件在我的分
  • 寻求帮助“@property(非空)”它是什么? [复制]

    这个问题在这里已经有答案了 property nonnull Does nonnulliOS8 3中添加了它 它能做什么 是的 它是在 XCode 6 3 中添加的 得到这个信息来自这里 nshipster http nshipster c
  • 正确使用PropertyChangedTrigger和ChangePropertyAction

    我正在尝试设置默认选定值ItemsSource我的财产变化ComboBox 我的xaml
  • onServiceConnected 在bindService 方法之后从未调用

    我有一个特殊情况 由广播接收器启动的服务启动一个活动 我想让此活动能够与服务进行通信 我选择使用 AIDL 来使其成为可能 一切似乎都很好 除了bindService 调用的方法onCreate 的活动 实际上 bindService 会抛
  • Java中用多个子类实现父类方法

    我有一堂课 我们称之为A 由几个子类扩展 B C D ETC 在每个子类中 我希望可以从父类的实例化中访问特定的方法A 我试图声明A作为抽象类 并将内部的每个子类方法声明为抽象类 然后我在自己的类中实现了这些方法 但似乎每个子类都必须实现父
  • Vanilla javascript Trap 模式中的焦点(辅助功能选项卡)

    这应该很简单 但由于某种原因它不起作用 我在正确的时间获得了正确的 console logs 但焦点没有到达正确的位置 请参考我的 jsfiddle https jsfiddle net bqt0np9d https jsfiddle ne
  • 使用 XPath Java 设置节点值

    我正在尝试通过 XPath 设置节点值 我有以下内容 但它似乎没有改变实际文件值 XPathFactory factory XPathFactory newInstance XPath xPath factory newXPath xPat
  • 如何在 DynamoDB 中创建 UUID?

    在我的数据库方案中 我需要一个自动增量主键 我怎样才能实现这个功能呢 PS 为了访问 DynamoDB 我使用dynode https github com Wantworthy dynode Node js 模块 免责声明 我是 Dyna
  • 如果空间不足,则隐藏标签 D3 可缩放旭日图

    所以我知道这个答案是为了隐藏不适合图表的文本 D3 如果有足够的空间 在饼图中放置圆弧标签 https stackoverflow com questions 19792552 d3 put arc labels in a pie char
  • 似乎无法清理分离的 DOM 元素

    我在用着jquery ui 选项卡 http jqueryui com tabs 我遇到了删除选项卡时出现的问题 该选项卡及其内容 div 似乎已被删除 但当您查看 Chrome DevTools 配置文件中的堆时 删除选项卡后 您会发现选
  • 相当于 Scala dropWhile

    我正在努力寻找一种方法来根据谓词跳过流开头的某些元素 像这样的事情 dropWhile n gt n lt 3 Stream of 0 1 2 3 0 1 2 3 4 forEach System out println 3 0 1 2 3
  • 通过浏览器后退按钮访问时重新加载网站

    问题 我有一个包含动态内容的网站 每次用户看到它时都需要重新加载 这包括当用户点击另一个站点上的后退按钮并到达需要重新加载的站点时的用例 大多数 全部 浏览器在此事件后不会刷新网站 我的解决方案 不太有效 http www hunlock
  • C++ 异常处理

    所以我正在编写一些代码 我注意到除了语法 类型和其他编译时错误之外 C 不会抛出任何其他异常 所以我决定用一个非常简单的程序来测试一下 include
  • 列表视图设置自定义波纹选择器

    我尝试在以下条件下在 Lollipop 上使用列表视图控件 主题类型是默认的Theme Material 深色主题 列表视图包含在具有白色背景的较大布局内 列表视图应该有一个以白色背景出现的列表选择器 注意 我被迫使用自定义列表选择器颜色