【问题标题】:Android ListView row background colorAndroid ListView 行背景颜色
【发布时间】:2023-03-06 18:51:01
【问题描述】:

我查看了许多 SO 问题,但无法弄清楚。我已经设法使用选择器来更改 ListView 的突出显示颜色 - 但如何设置正常(非按下)背景颜色?

下面的 XML 不起作用,因为它只会在按下项目后将我的行项目背景更改为黑色。我该怎么做?

<selector xmlns:android="http://schemas.android.com/apk/res/android"
    android:exitFadeDuration="@android:integer/config_mediumAnimTime">
    <item android:state_focused="true" android:drawable="@color/row_hilight"/>
    <item android:state_pressed="true" android:drawable="@color/row_hilight"/>
    <item android:state_pressed="false" android:drawable="@color/black"/>
</selector>

【问题讨论】:

    标签: android xml listview


    【解决方案1】:

    你需要有一个没有状态的默认状态。

    您还需要删除android:state_pressed="false",因为它具有与默认状态相同的功能。

    <selector xmlns:android="http://schemas.android.com/apk/res/android"
        android:exitFadeDuration="@android:integer/config_mediumAnimTime">
        <item android:state_focused="true" android:drawable="@color/row_hilight"/>
        <item android:state_pressed="true" android:drawable="@color/row_hilight"/>
        <item android:state_pressed="false" android:drawable="@color/black"/> //delete this
        <item android:drawable="@color/black"/> //add this
    </selector>
    

    【讨论】:

    • 真的吗?我以为我已经尝试过这样做,并且与“删除此”行的作用相同。当我再次回家时,我会再试一次。谢谢。
    • 嗨罗德。恐怕它仍然会做同样的事情。我的 ListView 包含在我的 Android 平板电脑上实际上是白色的行,但在我触摸这些行后,它们变为黑色。如果我触摸另一行,该行将变回白色,而新触摸的行将变为黑色 - 因此,如果您跟随,它将显示“选定”状态而不是默认行状态。
    • 我发现了问题,我会接受你的回答。它的行为与您描述的不一样,因为我实际上有 2 个选择器。一个是我在 row_item.xml 文件中分配的,另一个是我使用 getListView().setSelector() 以编程方式分配的。
    【解决方案2】:

    只需在最后添加一项即可:

        <item android:drawable="@color/default_color"/>
    

    来自state list drawables 的文档:

    每次状态变化时,状态列表从上到下遍历 并且使用与当前状态匹配的第一个项目—— 选择不是基于“最佳匹配”,而只是第一个项目 符合国家的最低标准。

    因此,如果其他项目都不匹配,则没有特定条件的项目将匹配。

    【讨论】:

    • 谢谢,但@color/default_color 会导致 XML 出错。 @color/transparent(在我的 colors.xml 文件中定义为 #00000000)似乎将该行恢复为之前的背景颜色。
    • 咳咳,默认颜色只是一个例子。你应该把你自己的颜色放在那里! :-|
    • OK :-) 不确定 default_color 是否意味着“使用系统默认颜色”或其他什么。感谢您的帮助。
    【解决方案3】:

    使用自定义适配器制作自定义列表视图:

    Custom Adapter for List View

    这是您可以在 getView 中使用具有所需背景的视图

    【讨论】:

      猜你喜欢
      • 2012-03-13
      • 2011-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-02
      • 1970-01-01
      相关资源
      最近更新 更多