12

リストビューの UI に問題があるようです。リストビューがあり、リスト上の任意の項目を選択すると、リストビュー全体が強調表示されます。選択は正常に機能しています。リスナーに正しいアイテムが表示されます。

しかし、問題は、アイテムを選択するとリストビュー全体が強調表示されるため、どの行が選択されたかを判断するのが難しいことです。

これはAndroid > 3.1で正常に動作しています-現在、2.3デバイスでテストしています。

<ListView
        android:id="@+id/myList"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:layout_marginTop="@dimen/margin_medium"
        android:background="@drawable/border"
        android:listSelector="#99000000"
        android:scrollbarFadeDuration="1000000"
        android:scrollbars="vertical" >
    </ListView>
4

3 に答える 3

26

最近同じ問題が発生しましたが、その理由はAndroid <3.0のバグにあります。リストアイテムを押すセレクターの描画可能オブジェクトとして@colorを設定すると、リスト領域全体が塗りつぶされます。解決策は、@colorの代わりに「shape」ドローアブルを使用することです。

したがって、同様のコンテンツを含む新しいXMLファイルをres/drawableフォルダーに作成します。

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

    <solid android:color="@color/my_list_item_pressed_color" />
</shape>

そして、ListViewセレクターで作成されたドローアブルを参照します(フォルダー内state_pressedにXMLファイルとしても作成されます)。res/drawable

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="true" android:drawable="@drawable/list_item_pressed_bg" />
    <item android:drawable="@android:color/transparent" />
</selector>

ListViewそして、あなたの:でこのセレクターを使用してください

<ListView
    .....
    android:listSelector="@drawable/list_item_selector" />

それで全部です。少なくともAndroid2.2-2.3で動作します。

于 2013-01-29T18:50:43.253 に答える
-3

この行を削除してこれを修正しました:(なぜそれが機能したのかわかりません)

android:listSelector="#99000000"

于 2012-06-14T00:35:21.820 に答える