2012-06-12 9 views
12

リストビューにUIの問題があるようです。私はリストビューを持っていて、リスト上の項目を選択し、リストビュー全体を強調表示します。選択はうまくいきます。リスナーに正しい項目が表示されます。Androidリストビュー全体リストが選択されています

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

これは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> 

答えて

-3

私はこの行を削除することで、これを固定listSelector =「#9900万」私は最近、同じ問題があったが、その理由はにあった

26

Android < 3.0バグ:@colorをリストアイテムセレクタのドロアブルとして設定すると、リストエリア全体が塗り潰されます。解決方法は、@ colorの代わりに 'shape' drawableを使用することです。

ので、同様の内容のres/drawableフォルダに新しいXMLファイルを作成します(またres/drawableフォルダにXMLファイルとして作成)state_pressedのためのあなたのListViewセレクタで

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

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

およびリファレンス作成した描画可能:

<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にこのセレクタを使用します。

それだけです。少なくともAndroid 2.2-2.3で動作します。

+0

ありがとう!これらの3.0/4.0より前のバグは、まったく文書化されていないので、本当に面倒です! –

+0

願い私はこの時間前にこのポストを見つけました。 'ShapeDrawable sd = new ShapeDrawable(new RectShape());これはプログラムでも行うことができます。 sd.getPaint()。setColor(Color.RED); listview.setSelector(sd); ' –

1

セレクタを変更しない場合は、ListViewのlistSelectorフィールドではなく、リスト項目のレイアウトの背景として設定することもできます。タッチされるとリスト項目は「選択された」状態を受け、色が適切に表示されます。

これはAndroidのすべてのバージョンで機能します。

例:これはあなたのリスト項目のレイアウトなしリストセレクターと

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/background_color"> 
<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Your text here" /> 
</LinearLayout> 

そして、あなたのリストである:

<ListView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 
関連する問題