如果背景不透明,ListViewItem不会突出显示

时间:2010-09-28 01:40:09

标签: android listview listviewitem

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

突出显示仅在我将背景设置为透明时才有效。如果没有这个改变,我怎样才能获得亮点?

这是我的ListView:

<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"
    >

3 个答案:

答案 0 :(得分:4)

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

<?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>

希望它有效。

答案 1 :(得分:2)

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

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

有两种解决方案:

  • 通过降低Alpha值使背景渐变透明。
  • 将“drawSelectorOnTop”属性设置为true,以便在列表项的顶部绘制选择器。在这种情况下,请确保您的选择器drawable不是完全不透明的。

答案 2 :(得分:1)

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