2

我有一个带有自定义渐变背景的 ListViewItem。默认选择器不再突出显示这些行。

仅当我将背景设置为透明时,突出显示才有效。如果不进行此更改,我怎样才能获得亮点?

这是我的列表视图:

<ListView android:id="@+id/symbolsListView"
    android:layout_width="fill_parent"
    android:background="@drawable/transparent_background"
    android:layout_height="390dp"
    android:divider="@drawable/ui_divider_line"
    android:cacheColorHint="#00000000"
    android:listSelector="@drawable/blue"
    android:drawSelectorOnTop="true"
    >
4

3 回答 3

4

你的一些重点和window_focused的状态。下面我提到了选择器的代码试试这个。

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_window_focused="false" android:drawable="@color/transparent" />

    <!--
        Even though these two point to the same resource, have two states so
        the drawable will invalidate itself when coming out of pressed state.
    -->
    <item android:state_focused="true" android:state_enabled="false"
        android:state_pressed="true" android:drawable="@color/transparent" />
    <item android:state_focused="true" android:state_enabled="false"
        android:drawable="@color/transparent" />

    <item android:state_focused="true" android:state_pressed="true"
        android:drawable="@color/solid_red" />
    <item android:state_focused="false" android:state_pressed="true"
        android:drawable="@color/solid_red" />

    <item android:state_focused="true" android:drawable="@color/solid_red" />

</selector>

希望它有效。

于 2010-09-28T04:23:44.453 回答
2

ListView 中的当前选择由您使用“listSelector”属性提供的附加可绘制对象突出显示。

默认情况下,选择器可绘制在列表项的后面。因此,如果您的项目的渐变背景是不透明的,则永远不会显示选择器。

有2个解决方案:

  • 通过降低 alpha 值使背景渐变透明。
  • 将“drawSelectorOnTop”属性设置为 true,以便将选择器绘制在列表项的顶部。在这种情况下,请确保您的选择器可绘制对象不是完全不透明的。
于 2010-09-28T09:59:13.650 回答
1

使用 a<selector>显示渐变背景的“按下”状态。

于 2010-09-28T01:49:41.843 回答