【问题标题】:Highlighting ListView item like youtube Application?突出显示像 youtube 应用程序这样的 ListView 项目?
【发布时间】:2013-07-10 05:21:00
【问题描述】:

您好,我正在开发一个应用程序,当我在列表项上进行选择时,它的背景颜色应该会发生变化,并且它还应该在列表项的左侧显示一个单色垂直条,就像它出现在 youtube 应用程序中一样。

图片附在下面:

我知道如何更改列表视图项目单击时的背景颜色,但如何添加出现在 youtube 应用程序中的红线。为此,我考虑在列表视图项 xml 中添加一个视图,我将在项目单击事件上显示该视图。但在这种情况下,我将如何隐藏其他列表视图项的视图?还是他们有其他简单的方法来实现这一点?

【问题讨论】:

  • 使用可绘制图像(9 个补丁图像)
  • @PankajKumar 没有得到您的解决方案。请详细说明
  • 你知道列表视图的自定义选择器吗?如果是,则使用图像而不是使用颜色。

标签: android listview android-listview


【解决方案1】:

尝试将此可绘制对象用于项目 state_pressed:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <solid android:color="@android:color/holo_red_dark" />
        </shape>
    </item>
    <item android:left="10dp">
        <shape>
            <solid android:color="@android:color/black" />
        </shape>
    </item>
</layer-list>

【讨论】:

    【解决方案2】:

    您应该实现一个背景选择器。为此,请为不同的行状态(选中、聚焦等)创建一个具有不同可绘制对象的 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/pressed"/> <!-- pressed -->
        <item android:state_focused="true" android:drawable="@drawable/focused" /> <!-- focused -->
        <item android:drawable="@drawable/default"/> <!-- default -->
    </selector>
    

    之后,只需将行背景 Drawable 设置为该文件即可。

    【讨论】:

    • 这个东西我知道,但是如何通过drawable添加红线?我应该使用哪个元素,属性?
    • 什么意思?您需要做的只是用红线创建一个 Drawable(来自 Image)。
    • 根据您的说法,我们可以使用单个可绘制对象来实现该红线并更改列表项的背景颜色?
    • 您可以定义 3 个 Drawable,每个用于不同的列表状态 :) 您知道该怎么做吗?或者您需要一些建议吗?
    【解决方案3】:

    要创建这种类型的列表视图,您需要创建自定义适配器。创建一个包含所有元素的视图。使用自定义 ArrayListAdapter 填充列表并使用背景选择器作为背景颜色。

    此外,对于垂直栏,默认视图将不可见,而对选择可见。创建一个公共静态列表,即使在视图关闭后也能跟踪选择。

    【讨论】:

      猜你喜欢
      • 2013-02-04
      • 1970-01-01
      • 2015-03-24
      • 2012-01-05
      • 1970-01-01
      • 1970-01-01
      • 2013-11-18
      • 2011-01-26
      • 1970-01-01
      相关资源
      最近更新 更多