2016-07-21 11 views
0

私はリストビューを持っており、カスタムビュー(それぞれ画像+テキスト)を表示しています。 これらのビューは、ユーザーがそれらを選択したときに異なる外観にします。 (オーバーレイを使用していますが、今はバックグラウンドで動作させようとしています)Android - リストビューでカスタムビューを選択できるようにする

Android.Resource.Layout.TestListItemでローを膨張させると、そのセルがクリックされたときに選択された状態が表示されます。

しかし、私は自分のカスタムレイアウトで同様の効果を得ようとしますが、それを動作させることはできません。何か不足していますか?

私は、このビューのレイアウトがあります。

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

... (textview and image) 

とrowbackground.xml:

<?xml version="1.0" encoding="utf-8"?> 

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_selected="true" android:drawable="@drawable/bg_a" /> 
<item android:state_checked="true" android:drawable="@drawable/bg_b" /> 
<item android:state_pressed="true" android:drawable="@drawable/bg_c" /> 
<item android:state_selected="false" android:state_checked="false" android:state_pressed="false" android:drawable="@drawable/bg_d"/> 
</selector> 

しかし、唯一の2つの作品は、 "デフォルト" と "押された" 状態です。 「選択された」ものではありません。 (私はいくつかのサンプルでそれを確認しました)

カスタムレイアウトビューを選択可能にするにはどうしたらいいですか?

+0

なぜ、android.R.layout.test_list_itemが動作するのは、test_list_itemがTextViewでレイアウトがLinearLayoutのため、 –

+0

tryeがLinearLayoutにandroid:focusable = "false"を追加するか、TextViewをレイアウトを作成し、その属性leftDrawableを使用してTextViewの左側に画像を表示すると、TextViewとImageだけの場合に便利です。 –

+0

ありがとうございます。おそらくそうですが、TextViewをLinearLayoutではなく選択可能にするのは何ですか?アンドロイド:focusable = "false"を追加しようとしましたが、変更されませんでした。 –

答えて

1

OK]をクリックして、実際に、リストビューで「選択」状態を処理するために、次のような有効セレクタ(android:state_activated)、使用する必要があります:文書化されていないようです。もちろん、

<item android:state_activated="true" android:drawable="@drawable/ic_dep" /> 

をどこでも。しかし、なぜ、それはとても簡単ですか? Thanks android

0

この行をListView android:background="@drawable/rowbackground"に追加し、この行をカスタムレイアウトから削除しないでください。

関連する問題