1

この 1 change color of selected listview item のような多くの質問に従いましたが、何も役に立ちませんでした。

リストビューがあり、ユーザーが指を離した後でも、選択したアイテムを青色などで強調表示する必要があります。

これはドローアブルの私のrow_color.xmlです

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

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

    <item android:state_pressed="true" android:drawable="@color/light_sea_green" />

    <item android:state_selected="true" android:drawable="@color/light_sea_green" />

</selector>

そして、これは膨張している私のレイアウトです

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" 
    android:background="@drawable/row_color">

    <ImageView
        android:id="@+id/imageView_game_row_face"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginBottom="4dp"
        android:layout_marginTop="4dp"
        android:src="@drawable/af025501" />

</LinearLayout>
4

1 に答える 1

0

これをあなたのセレクターに追加します

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

これがデフォルトのドローアブルになります。

削除できます

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

更新 ->

これはあなたを助けることができるコードスニペットです -

public View getView(int position, View convertView, ViewGroup parent) {

/* Your code reusing code here */

    if(position == selectedItemPosition which you must save in onItemClickListener of the listview)
        convertView.setBackgroundResource(selecteditem background color);
    }
    else {
        convertView.setBackgroundResource(normal background color);
    }

}

他の部分は非常に重要です。そうしないと、リサイクルされたビューが同じ背景色を持つことになります。

于 2012-10-09T04:58:18.950 に答える