- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个可绘制选择器作为 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:
我认为这可能是我的代码中的一些东西,但我从 ListView
的 onListItemClick
中删除了所有代码,但 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
并记住点击的位置并从代码中突出显示它。不理想,但不值得努力修复。
最佳答案
好的,我认为这是您的选择器的问题。尝试删除 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/
我之前让 dll 注入(inject)器变得简单,但我有 Windows 7,我用 C# 和 C++ 做了它,它工作得很好!但是现在当我在 Windows 8 中尝试相同的代码时,它似乎没有以正确的方
我正在尝试制作一个名为 core-splitter 的元素,该元素在 1.0 中已弃用,因为它在我们的项目中起着关键作用。 如果您不知道 core-splitter 的作用,我可以提供一个简短的描述。
我有几个不同的蜘蛛,想一次运行所有它们。基于 this和 this ,我可以在同一个进程中运行多个蜘蛛。但是,我不知道如何设计一个信号系统来在所有蜘蛛都完成后停止 react 器。 我试过了: cra
有没有办法在达到特定条件时停止扭曲 react 器。例如,如果一个变量被设置为某个值,那么 react 器应该停止吗? 最佳答案 理想情况下,您不会将变量设置为一个值并停止 react 器,而是调用
https://code.angularjs.org/1.0.0rc9/angular-1.0.0rc9.js 上面的链接定义了外部js文件,我不知道Angular-1.0.0rc9.js的注入(in
我正在尝试运行一个函数并将服务注入(inject)其中。我认为这可以使用 $injector 轻松完成.所以我尝试了以下(简化示例): angular.injector().invoke( [ "$q
在 google Guice 中,我可以使用函数 createInjector 创建基于多个模块的注入(inject)器。 因为我使用 GWT.create 在 GoogleGin 中实例化注入(in
我在 ASP.NET Core 1.1 解决方案中使用配置绑定(bind)。基本上,我在“ConfigureServices Startup”部分中有一些用于绑定(bind)的简单代码,如下所示: s
我在 Spring MVC 中设置 initBinder 时遇到一些问题。我有一个 ModelAttribute,它有一个有时会显示的字段。 public class Model { privat
我正在尝试通过jquery post发布knockoutjs View 模型 var $form = $('#barcodeTemplate form'); var data = ko.toJS(vm
如何为包含多态对象集合的复杂模型编写自定义模型绑定(bind)程序? 我有下一个模型结构: public class CustomAttributeValueViewModel { publi
您好,我正在尝试实现我在 this article 中找到的扩展方法对于简单的注入(inject)器,因为它不支持开箱即用的特定构造函数的注册。 根据这篇文章,我需要用一个假的委托(delegate)
你好,我想自动注册我的依赖项。 我现在拥有的是: public interface IRepository where T : class public interface IFolderReposi
我正在使用 Jasmine 测试一些 Angular.js 代码。为此,我需要一个 Angular 注入(inject)器: var injector = angular.injector(['ng'
我正在使用 Matlab 代码生成器。不可能包含代码风格指南。这就是为什么我正在寻找一个工具来“ reshape ”、重命名和重新格式化生成的代码,根据我的: 功能横幅约定 文件横幅约定 命名约定 等
这个问题在这里已经有了答案: Where and why do I have to put the "template" and "typename" keywords? (8 个答案) 关闭 8
我开发了一种工具,可以更改某些程序的外观。为此,我需要在某些进程中注入(inject)一个 dll。 现在我基本上使用这个 approach .问题通常是人们无法注入(inject) dll,因为他们
我想使用 swing、spring 和 hibernate 编写一个 java 应用程序。 我想使用数据绑定(bind)器用 bean 的值填充 gui,并且我还希望它反射(reflect) gui
我有这段代码,当两个蜘蛛完成后,程序仍在运行。 #!C:\Python27\python.exe from twisted.internet import reactor from scrapy.cr
要点是 Spring Batch (v2) 测试框架具有带有 @Autowired 注释的 JobLauncherTestUtils.setJob。我们的测试套件有多个 Job 类提供者。因为这个类不
我是一名优秀的程序员,十分优秀!