我有一个可绘制选择器作为 a 中每个项目的背景,ListView
以突出显示所选行。Eveything 在 Ice Cream Sandwich 中运行良好,但在 Jelly Bean 中似乎不起作用。找不到任何文档说明哪些更改可能导致它停止工作以及我需要做些什么来修复它。
通过不工作,我的意思是当我单击ListView
项目背景颜色中的一行时不会改变@color/blue
颜色,但它会在 ICS 中。
这是我正在使用的选择器代码(listing_selector.xml):
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_focused="true" android:drawable="@color/blue" />
<item android:state_pressed="true" android:drawable="@color/blue" />
<item android:state_activated="true" android:drawable="@color/blue_selected" />
<item android:state_selected="true" android:drawable="@color/blue_selected" />
<item android:drawable="@android:color/transparent" />
</selector>
这是ListView
项目的布局:
<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"
android:layout_alignParentLeft="true"
/>
</RelativeLayout>
这是蓝色资源:
<resources>
<color name="blue">#ff33b5e5</color>
</resources>
更新 1:
尝试将选择器从color
文件夹移动到drawable
文件夹并将代码更新为:
android:background="@drawable/listing_selector"
更新 2:
此外,在 上ListView
,尝试添加以下内容:
<ListView android:id="@android:id/list"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:listSelector="@drawable/listing_selector"
/>
更新 3:
我认为这可能是我的代码中的某些内容,但我从中删除了所有代码,但onListItemClick
仍然ListView
无法selector
正常工作。
更新 4:
我已经把它缩小到state_selected
或state_activated
不工作,state_pressed
似乎工作
更新 5:
我想我错了。我认为选择器根本没有被识别。我混淆了内置ListView
突出显示作为我的选择器。我现在想知道它是否与我的项目设置方式有关。我在库类中有选择器。也许从 ICS 到 JB 发生了一些变化,但是将选择器移动到我的应用程序的项目似乎并没有解决它。
更新 6:
好的,在拉了一些头发之后,我再次将其缩小到要么 被识别,state_selected
要么state_activated
不被识别,因为改变颜色state_pressed
确实有效,这意味着我的选择器正在被识别。从评论看来,我的应用程序似乎有些特殊,因为其他人已经能够让选择器与 Jelly Bean 一起工作。
尽管其他有趣的事情drawable
是无法识别更改默认状态的值。在我有的地方color/transparent
,我认为将其更改为颜色会导致列表更改为该颜色,但事实并非如此。
此外,这在 ICS 中也不起作用。
更新 7:
在拉了更多头发之后,我发现长按菜单项会导致该项目的颜色发生变化。仅单击一个项目仍然不起作用。甚至不确定是什么意思。
**最终更新:**
我放弃了,我删除了选择器,只是刷新ListView
点击并记住点击的位置并从代码中突出显示它。不理想,但不值得尝试修复。