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」属性を使用して提供する追加のドローアブルによって強調表示されます。

デフォルトでは、ドローアブルセレクターはリストアイテムの後ろに描画されます。したがって、yout アイテムのグラデーションの背景が不透明な場合、セレクターは表示されません。

2 つの解決策があります。

  • アルファ値を下げて、背景のグラデーションを透明にします。
  • 「drawSelectorOnTop」属性を true に設定して、セレクターがリスト項目の上に描画されるようにします。この場合、セレクター ドローアブルが完全に不透明でないことを確認してください。
于 2010-09-28T09:59:13.650 に答える
1

を使用し<selector>て、グラデーションの背景で「押された」状態を表示します。

于 2010-09-28T01:49:41.843 に答える