【问题标题】:how to can i get the view which changes color of only selected item of list如何获得仅更改列表中选定项目颜色的视图
【发布时间】:2013-02-13 14:32:57
【问题描述】:

我正在开发一个应用程序,其中我有一个列表视图。在列表视图中,我只想更改所选项目的颜色。这意味着如果我点击第一个项目它应该改变颜色然后我再次点击第二个项目然后第一个项目的颜色将变得正常并且它会改变第二个项目的颜色。我在这里使用自定义列表视图。这里position 是选中项,CommonUtilities.getListPosition() 是全局定义的存储位置的方法。我可以在选择时更改颜色,但是当我单击第二个项目时,颜色不会更改为之前的颜色。

if (position == CommonUtilities.getListPosition()) {
    v.setBackgroundColor(Color.CYAN);
}else{
    v.setBackgroundColor(Color.WHITE);
}

【问题讨论】:

    标签: android android-listview selection


    【解决方案1】:

    在 ListView 的 xml 中应用 listSelector,如下所示:

    android:listSelector="@drawable/list_selector"
    

    并在drawable文件夹中创建list_selector.xml文件,内容如下:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item android:drawable="@color/row_not_selected" android:state_pressed="false" android:state_selected="false"/>
        <item android:drawable="@color/row_selected" android:state_pressed="true" android:state_selected="true"/>
    
    </selector>
    

    并在colors.xml 中创建两种颜色,名称为row_not_selected, row_selected

    就是这样。谢谢。 如果还有其他需要,请告诉我。

    【讨论】:

      【解决方案2】:

      ListView item background via custom selector。 此链接将为您提供帮助。使用选择器。按下时和正常模式下指定不同的颜色。我希望这正是您想要的。

      当您单击列表视图中的一行时,您可以在单击时更改列表视图的颜色。然后在发布时恢复正常状态。为什么单击第二行时要更改第一行颜色?列表视图中的每一行都保持正常状态,直到被单击为止。释放时恢复正常状态。上面的链接可以帮助您实现同样的目标。

      【讨论】:

      • 当我编辑我的问题时,我可以在 itemclick 上更改颜色。但是当我点击第二个项目时,第一个项目应该移动到它的原始颜色。我用选择器来改变颜色。
      • 就像按钮的工作方式一样。在 selector.xml 中 android:state_selected="true" android:drawable="@drawble/pressed"。在drawable文件夹中定义pressed.xml。在pressed.xml 中定义你想要的背景。上面的链接是一个很好的起点。
      • 发布视图是什么意思?
      猜你喜欢
      • 2017-03-13
      • 2021-02-05
      • 2014-07-08
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      • 2022-09-28
      • 1970-01-01
      相关资源
      最近更新 更多