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

2024-02-18

我有一个可绘制的选择器作为每个项目的背景ListView以突出显示所选行。一切在冰淇淋三明治中都可以正常工作,但在果冻豆中似乎不起作用。找不到任何文档说明哪些更改可能导致它停止工作以及我需要做什么来修复它。

不工作是指当我单击行中的一行时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 item:

<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 of the ListView并且仍然是selector不工作。

更新4:

我已经将范围缩小到state_selected or state_activated不作为,state_pressed似乎正在工作

更新5:

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

更新6:

好吧,经过更多的拉扯之后,我再次将范围缩小到state_selected or state_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,因为在 ICS 之前的手机上,整个列表将突出显示该颜色,而不是按下的列表项。

您可以添加在您的state_selected代码也一样,但我不确定它将如何使用。查看 jelly bean 的默认选择器代码,了解它们使用的状态:列表选择器背景.xml http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.1.1_r1/frameworks/base/core/res/res/drawable/list_selector_background.xml?av=f.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可绘制选择器在 Jelly Bean 中不起作用 的相关文章

随机推荐

  • 如何从检测意图 API 触发对话流事件?

    如何从 python 检测意图 API 触发对话流中的事件 我想在启动聊天窗口时立即触发欢迎意图 您需要将 WELCOME 事件作为查询输入的一部分发送到调用detect intent 它可能看起来像这样 import dialogflow
  • 在应用程序购买沙箱中不提示我输入登录/密码

    我们正在开发一款应用程序 当然 用于应用程序购买 IAP 我已完成指南中启用 iap 的所有操作 一切正常 直到我想购买 一些代码 MainViewController m void viewDidLoad if SKPaymentQueu
  • 将 JTable 放入 JTree 中

    与螺纹有关Jtable 作为 Jtree 节点 https stackoverflow com questions 8839025 jtable as a jtree node我把 JTable 放到 JTree 中 但是JTree视图在启
  • 无法解析缺少分钟的日期?

    我正在尝试解析不包含分钟 2019 10 12T07Z 的日期时间字符串 import java time OffsetDateTime import java time format DateTimeFormatter public cl
  • 从触发器下载delphi中的文件并捕获文件名

    我有一个网站的网址 它看起来像这样 http www example com downloads file 4789 download http www example com downloads file 4789 download 我想
  • shouldOverrideUrlLoading 仅在某些网页上被调用

    我正在为针对多个客户端进行个性化的应用程序使用 shouldOverrideUrlLoading 方法 每个客户端都有自己的网页想要加载到 webview 中 我的问题是这样的 该应用程序非常适合客户 A 及其网页 但不适用于客户 B 的网
  • django-admin startproject尝试创建manage.py两次?

    我正在努力解决Django 教程 https docs djangoproject com en 1 9 intro tutorial01 版本 1 9 在 Ubuntu 15 10 上运行 当我到达跑步的台阶时django admin s
  • Express.js 无法 GET /index.html.var

    所以我在共享主机 FastComet 中运行一个快速应用程序 但如果我想访问 我会收到此消息 无法获取 index html var 显然这与 htaccess file 我解决这个问题的方法是添加 DirectoryIndex disab
  • 删除 iOS 7 中的 Tab Bar 水平分隔符

    我想删除 UITabBar 和屏幕其余部分之间的水平分隔线 我问和这个人有同样的问题 https stackoverflow com q 11104796 1224741但针对 iOS7 进行了更新 设置我的 UITabBar 的背景图像并
  • 使用mockito库模拟java中的final类[重复]

    这个问题在这里已经有答案了 我有一个最终类 它有一个我想执行特定操作的方法 因此我想创建最终类的对象 但我无法创建它 以下是我的课程 public final class A private String name A String nam
  • 在 Emacs 中搜索标记(选定)文本

    我使用 emacs 查看和编辑代码和其他文本文件 我想知道是否有一种方法可以向前或向后搜索当前缓冲区中标记的文本 类似于我在记事本或写字板中可以执行的操作 就像我可以在缓冲区中标记一些文本并执行 C s 或 C r 并能够使用标记的文本进行
  • 无法在画布上绘制垂直虚线

    我正在使用以下 javascript 算法在画布上绘制虚线 该算法正确绘制水平线 但无法绘制垂直线 g dashedLine function x y x2 y2 dashArray this beginPath this lineWidt
  • javascript 上的 localStorage 带来刷新

    我试图在空闲时关闭用户 在选项卡之间使用 javascript 下面的代码对于单个选项卡工作正常 对于多个选项卡它无法正常工作 例如 我设置了 10 秒作为空闲时间 并离开了第一个选项卡 它会在 10 秒内将用户抛出 假设我在以下位置打开了
  • 使用 babel 6 时,` __webpack_require__(...) 不是一个函数`

    一切似乎都建立得很好 http d pr i 1aZxR http d pr i 1aZxR使用以下配置 但是 当我运行代码时 出现以下错误 通过 webpack dev server Uncaught TypeError webpack
  • 如何在 R 中对行和列进行子集化

    我是R新手 在阅读 R in action 这本书时 遇到了一个问题 代码有什么区别newdata lt leadership order leadership age and newdata lt leadership order lea
  • 协变和逆变之间的区别

    我无法理解协变和逆变之间的区别 问题是 协变和逆变有什么区别 协变和逆变是将集合中的一个成员与另一个成员关联起来的映射函数 更具体地说 映射可以是协变的或逆变的relation在那一套上 考虑所有 C 类型集的以下两个子集 第一的 Anim
  • 存储目录结构的数据结构?

    我正在使用 struts 2 框架开发一个简单的 java web 应用程序 该应用程序的目的是使用JSP页面显示我的计算机下的特定目录结构 我的问题是使用哪种数据结构为了存储目录结构 以便 JSP 页面可以从操作类访问该目录结构对象 ps
  • 我应该从 Python 3.0 开始吗​​? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 最近我决定扩大我的编程视野并学习Python编程语言 虽然我在大学课程和工作中的一两个项目中使用过一点 Python 但我绝不是专家 我的问题如
  • 使用 Perl 正则表达式捕获 C 样式代码块之前和之后的文本

    我正在尝试使用 Perl 正则表达式捕获 C 样式代码块之前和之后的一些文本 到目前为止 这就是我所拥有的 use strict use warnings my text lt lt END int max int x int y if x
  • 可绘制选择器在 Jelly Bean 中不起作用

    我有一个可绘制的选择器作为每个项目的背景ListView以突出显示所选行 一切在冰淇淋三明治中都可以正常工作 但在果冻豆中似乎不起作用 找不到任何文档说明哪些更改可能导致它停止工作以及我需要做什么来修复它 不工作是指当我单击行中的一行时Li