gpt4 book ai didi

android - 可绘制选择器在 Jelly Bean 中不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:27:55 25 4
gpt4 key购买 nike

我有一个可绘制选择器作为 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:

我认为这可能是我的代码中的一些东西,但我从 ListViewonListItemClick 中删除了所有代码,但 selector 仍然是'工作。

更新 4:

我已经将它缩小到 state_selectedstate_activated 不工作,因为 state_pressed 似乎在工作

更新 5:

我想我错了。我认为选择器根本没有被识别。我混淆了内置的 ListView 突出显示作为我的选择器。我现在想知道它是否与我的项目设置方式有关。我在图书馆类中有选择器。也许从 ICS 到 JB 发生了一些变化,但是将选择器移动到我的应用程序项目似乎并没有解决它。

更新 6:

好吧,经过更多的努力之后,我再次将范围缩小到 state_selectedstate_activated 未被识别,因为更改了 state_pressed 确实有效,这意味着我的选择器被识别了。从中的评论来看,我的应用程序似乎有一些特别之处,因为其他人已经能够让选择器与 Jelly Bean 一起使用。

虽然还有其他有趣的事情是无法识别更改默认状态的 drawable 值。在我有 color/transparent 的地方,我认为将其更改为一种颜色会导致列表更改为该颜色,但事实并非如此。

此外,这在 ICS 中也不起作用。

更新 7:

经过更多的努力,我发现长按菜单项会导致该项目的颜色发生变化。仅单击一个项目仍然不起作用。甚至不确定这意味着什么。

** 最后更新:**

我放弃了,我删除了选择器,只是在点击时刷新 ListView 并记住点击的位置并从代码中突出显示它。不理想,但不值得努力修复。

最佳答案

好的,我认为这是您的选择器的问题。尝试删除 state_focused 和 state_activated。你可以为你的选择器试试这个:

<!-- Disabled State -->
<item
android:state_enabled = "false"
android:state_focused = "true"
android:state_pressed = "true"
android:drawable="@android:color/transparent">
</item>
<item
android:state_enabled = "false"
android:state_focused = "true"
android:drawable="@android:color/transparent">
</item>

<!-- Pressed State -->
<item
android:state_pressed = "true"
android:state_focused = "true">
<shape>
<solid android:color="@color/blue"/>
</shape>
</item>
<item
android:state_pressed = "true"
android:state_focused = "false">
<shape>
<solid android:color="@color/blue"/>
</shape>
</item>

<!-- Normal State -->
<item
android:drawable="@android:color/transparent">
</item>

我发现我也需要使用形状对象而不是 android:drawable,因为在 pre-ICS 手机上,整个列表将以该颜色突出显示,而不是按下的列表项。

您也可以添加您的state_selected 代码,但我不确定它将如何使用。查看果冻 bean 的默认选择器代码以了解它们使用的状态:list_selector_background.xml .

关于android - 可绘制选择器在 Jelly Bean 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11661190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com