- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 ListView,我在其中使用 onListItemClick
事件更改所选项目的背景颜色:
@Override
public void onListItemClick(final ListView l, final View v, final int position, final long id)
{
v.setBackgroundColor(Color.GRAY);
}
是否可以在更改单个 View 的背景颜色之前将 ListView 的所有行重置回原始颜色?问题是每个选定的项目都保留了它们的背景颜色,我只希望用户点击的最新项目发生变化。
更新:
JRaymond 的回应似乎是最好的方法,但是,在使用 Android 布局时,这很常见,我将代码放入其中但没有任何反应。无法调试它,没有错误消息,什么都没有。我绝对讨厌处理 Android 布局,它是处理 UI 时最复杂、实现最糟糕的设计。
无论如何,这是我目前所拥有的:
ListView :
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
>
<ListView android:id="@android:id/list"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:choiceMode="singleChoice"
android:listSelector="@drawable/listing_selector"
/>
<TextView android:id="@android:id/empty"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:padding="5dp"
/>
</LinearLayout>
listing_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_focused="true" android:drawable="@android:color/transparent" />
<item android:state_pressed="true" android:drawable="@android:color/transparent" />
<item android:state_selected="true" android:state_activated="true" android:drawable="@android:color/black" />
<item android:state_activated="true" android:drawable="@android:color/transparent" />
<item android:state_selected="true" android:drawable="@android:color/transparent" />
<item android:drawable="@android:color/transparent" />
</selector>
正如我所说,当我点击项目时没有任何反应,甚至内置的突出显示也消失了。我什至尝试将所有颜色更改为黑色,但没有任何反应。
更新 2:
我越来越近了。看完this文章中,您必须将selector
xml 放在res
下名为color
的文件夹中,然后设置selector
作为 ListView
中每个项目布局中的背景,而不是 ListView
本身:
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:background="@color/listing_selector"
>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</RelativeLayout>
当我触摸 ListView
中的每个项目时,我看到背景颜色会闪烁,但是,它们不会停留并恢复为原始背景颜色。这是我正在使用的选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="false" android:state_pressed="false" android:drawable="@android:color/transparent" />
<item android:state_pressed="true" android:drawable="@color/blue" />
<item android:state_selected="true" android:state_pressed="false" android:drawable="@color/blue" />
</selector>
颜色.xml:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<color name="blue">#ff33b5e5</color>
</resources>
这实在是太让人头疼了。想出这个糟糕的 UI 处理系统的人应该被解雇。
解决方案:
不能 100% 确定,但这可能只适用于 Android 3.0+ 设备。 state_activated
是用来设置背景颜色的。
最佳答案
您正在寻找的是 stateListDrawable(也称为选择器)和 choiceMode 的组合。
在您的 drawables
文件夹中包含一个像这样的 xml(我使用其他 drawables 作为我的背景,但颜色也一样):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_focused="true"
android:drawable="@drawable/list_item_pressed" />
<item android:state_pressed="true"
android:drawable="@drawable/list_item_pressed" />
<item android:state_selected="true"
android:state_activated="true"
android:drawable="@drawable/list_item_selected" />
<item android:state_activated="true"
android:drawable="@drawable/list_item_selected" />
<item android:state_selected="true"
android:drawable="@android:color/black" />
<item android:drawable="@android:color/transparent" />
</selector>
然后将 ListView 的 choiceMode
设置为 singleChoice
<ListView
...
android:choiceMode="singleChoice"
这让操作系统为您处理背景。
关于android-listview - 在 ListView 中重置背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10149581/
我正在尝试使用谷歌浏览器的 Trace Event Profiling Tool分析我正在运行的 Node.js 应用程序。选择点样本后,我可以在三种 View 之间进行选择: 自上而下(树) 自上而
对于一个可能是菜鸟的问题,我们深表歉意,但尽管在 SO 上研究了大量教程和其他问题,但仍找不到答案。 我想做的很简单:显示一个包含大量数据库存储字符串的 Android ListView。我所说的“很
我已经开始了一个新元素的工作,并决定给 Foundation 5 一个 bash,看看它是什么样的。在创建带有水平字段的表单时,我在文档中注意到的第一件事是它们使用大量 div 来设置样式。所以我在下
我有一个 Windows 窗体用户控件,其中包含一个使用 BeginInvoke 委托(delegate)调用从单独线程更新的第 3 方图像显示控件。 在繁重的 CPU 负载下,UI 会锁定。当我附加
我有一堆严重依赖dom元素的JS代码。我目前使用的测试解决方案依赖于 Selenium ,但 AFAIK 无法正确评估 js 错误(addScript 错误不会导致您的测试失败,而 getEval 会
我正在制作一款基于滚动 2D map /图 block 的游戏。每个图 block (存储为图 block [21][11] - 每个 map 总共 231 个图 block )最多可以包含 21 个
考虑到以下情况,我是前端初学者: 某个 HTML 页面应该包含一个沉重的图像(例如 - 动画 gif),但我不想强制客户缓慢地等待它完全下载才能享受一个漂亮的页面,而是我更愿意给他看一个轻量级图像(例
我正在设计一个小软件,其中包括: 在互联网上获取资源, 一些用户交互(资源的快速编辑), 一些处理。 我想使用许多资源(它们都列在列表中)来这样做。每个都独立于其他。由于编辑部分很累,我想让用户(可能
我想比较两个理论场景。为了问题的目的,我简化了案例。但基本上它是您典型的生产者消费者场景。 (我关注的是消费者)。 我有一个很大的Queue dataQueue我必须将其传输给多个客户端。 那么让我们
我有一个二元分类问题,标签 0 和 1(少数)存在巨大不平衡。由于测试集带有标签 1 的行太少,因此我将训练测试设置为至少 70-30 或 60-40,因此仍然有重要的观察结果。由于我没有过多地衡量准
我是一名优秀的程序员,十分优秀!