繁体   English   中英

正确设置列表项的背景

Correctly setting the background of a list item

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我使用一个RecyclerView和一个简单的项目布局,该布局由一个ConstraintLayout组成,其中包含每个项目的文本元素。 我想设置所有项目的背景

  1. 单击时显示波纹效果。
  2. 可视化视图处于活动状态
  3. 能够设置颜色。 (可选,如果确实需要)

SDK的最低版本为21,如果需要,可以提高版本。


我试过的

  • 使用@android:drawable/list_selector_background不可自定义,也不会显示涟漪。
  • 使用?selectableItemBackground?selectableItemBackgroundBorderless不起作用,它将在运行时引发异常( Failed to resolve attribute [...] )。 我确实将设计支持库放在了gradle脚本中,或者现在放在了com.google.android.material包中。 前置android:attr/产生了相同的错误。
  • 使用StateListDrawable自己使用许多<ripple> Drawables来构建所有对象似乎过于复杂,因为我不想重现上述功能的全部功能。
1 个回复

@Cheticamp链接的这个答案本文中的方法结合使用效果很好:

项目的布局如下所示:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/list_item_background_active_handler">

    <include
        layout="@layout/the_actual_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?selectableItemBackground" />

</FrameLayout>

list_item_background_active_handler看起来像这样:

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

    <item android:drawable="@color/listBackgroundActive" android:state_activated="true" />

    <!-- default -->
    <item android:drawable="@android:color/transparent" />

</selector>

这允许使用自定义颜色处理活动状态。 只需在适配器的onBindViewHolder()中的项目视图上调用isActivated(true)

波纹效果的颜色可以用这种方法定制。

1 设置列表项的背景

当我单击listView的一个项目时,我单击的另一个项目的背景发生了变化。 如果单击第一个,则ListView的背景和最后一项的背景都在变化。 如果我向下滚动并单击一个项目,则单击的项目后它的颜色会更改。 我该怎么做才能更改所选项目的背景? XML: Java: ...

2 Android listSelector vs设置列表项背景

我有一个ListView,其选择模式设置为单选。 我想要突出显示所选项目(如果有的话)(即,具有与其他项目不同颜色的背景)。 我一直在依靠设置列表选择器来实现这一目标。 但是,我发现,当我的ListView位于选项卡上(即包含在TabHost中)时,如果我切换到另一个选项卡并再次返回到 ...

3 列表项之前的图标,设置了不同的背景

尝试在列表元素之前插入图标。 我要为每个背景设置不同的背景图像。 当我为每个重复代码,但我不想重复代码时,它的工作。 我的问题:为什么这样不起作用,以及如何在不重复代码的情况下更改每个列表项的背景 ...

4 如何为所选列表项设置背景样式?

我在使用自定义适配器和列表项xml布局定义ListView时遇到问题。 问题是我的ListView在按下时没有突出显示。 我正在执行以下操作: 我定义了一个可绘制的选择器xml资源文件: 我定义一个项目布局xml文件: 最后,我在自定义数据适配器中编写了代码,以进行充气 ...

2012-08-13 23:08:41 2 461   android
5 设置列表项的背景色

我有一个ListActivity,它将XML文档(android:id =“ @ android:id / android:list”)中的SimpleCursorAdapter设置为ListView。 我在预填充的数据库中有五行。 活动开始时,我想将与_id 3的数据库行相对应的列表项视图 ...

9 为统一创建动态创建的列表项设置背景

我想在预制件上单击时为其添加背景,因为它看起来应该像其选定的一样,但是我已经添加了可以正常工作的点击侦听器,但是我无法添加背景 for (int i = 0; i &lt; list.Count; i++) { GameObject tempobj = Instantiate (amtPr ...

10 android设置列表项自定义背景颜色

我需要根据适配器中项目的属性为列表项设置自定义颜色,我不能使用选择器(项目的条件是自定义颜色是项目属性,而不是选定或聚焦状态)。 在我设置的getView方法中 但这不起作用,因为我为背景设置的颜色无关紧要,结果是一样的。 我尝试将背景颜色设置为布局,但结果是一样的。 你能告诉我一 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM