【问题标题】:Android: Entire ListView changes color on focus, not just ListView child itemAndroid:整个 ListView 在焦点上更改颜色,而不仅仅是 ListView 子项
【发布时间】:2010-08-24 16:57:45
【问题描述】:

我正在尝试将选择器应用到 ListView,以使那些没有触摸屏的人能够轻松浏览我的应用程序。问题是,通过将选择器应用于 ListView,它似乎只将背景颜色应用于整个列表,而不是其中的项目。

有什么想法吗?这是一些代码:

    <ListView
   android:id="@android:id/list"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:listSelector="@drawable/listselector"
   />

   <TextView android:id="@android:id/empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="There are no Clients yet."
        />

可绘制文件夹中的listselector.xml:

    <?xml version="1.0" encoding="utf-8"?>
<selector
    android:id="@+id/myselector"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Non focused states -->
    <item
        android:state_focused="false"
        android:state_selected="false"
        android:state_pressed="false"
        android:drawable="@color/darkblue" />
    <item
        android:state_focused="false"
        android:state_selected="true"
        android:state_pressed="false"
        android:drawable="@color/green" />

    <!-- Focused states -->
    <item
        android:state_focused="true"
        android:state_selected="false"
        android:state_pressed="false"
        android:drawable="@color/green" />
    <item
        android:state_focused="true"
        android:state_selected="true"
        android:state_pressed="false"
        android:drawable="@color/green" />

    <!-- Pressed -->
    <item
        android:state_pressed="true"
        android:drawable="@color/green" />
</selector>

【问题讨论】:

  • 只是为了帮助其他可能遇到此问题的人:我通过以 android:background 属性的形式将选择器权限应用于 ListItem 项子项来修复它,并且它起作用了!
  • 你应该接受下面的正确答案

标签: android xml


【解决方案1】:

您看到将焦点颜色应用于整个列表的原因是因为您直接引用了焦点和按下状态的颜色值。在 Android v2.3 及更低版本中存在一个已知错误,即颜色可绘制对象在这些情况下不符合其边界。

要解决此问题,您可以使用所需颜色创建可绘制的形状并引用它。

例如,将“drawables/list_selector_focused.xml”中的形状定义为:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">

    <solid android:color="@color/green" />

</shape>

然后在选择器中引用它:

<item android:state_focused="true"
      android:state_selected="true"
      android:state_pressed="false"
      android:drawable="@drawable/list_selector_focused" />

【讨论】:

  • 这是对问题的正确诊断,应该得到比目前更多的支持。 :)
猜你喜欢
  • 2013-12-15
  • 1970-01-01
  • 2011-01-14
  • 1970-01-01
  • 2020-08-29
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多