1

アプリケーションの Navigation Drawer 内で ListView を使用しようとしています。この ListView (私のアプリのいくつかのタグに対応) で複数の項目を選択できるようにして、どの項目が選択されているかをユーザーに表示したいと思います。

リストビューのすべてのアイテムの背景として設定されているAndroid> = 4.0で次のドローアブルを使用しています。

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

そして、そのバージョンでは非常にうまく機能します。ただし、Android 2.3 (エミュレーター) では、一度選択するとフィードバックが表示されません。

また、エミュレーターでうまく機能しない他のセレクタードローアブルも試しました。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/solid_white" android:state_activated="false"/>
    <item android:drawable="@drawable/solid_white" android:state_activated="false" android:state_pressed="false"/>
    <item android:drawable="@drawable/listitem_pressed" android:state_pressed="true"/>
    <item android:drawable="@drawable/listitem_focused" android:state_activated="true"/>
</selector>

私のJavaコードでは、次の行を使用して、ユーザーがクリックしたときに選択されたアイテムを設定していることに注意してください。

this.mDrawerList.setSelection(position);
4

2 に答える 2

2

そのため、Jonathan が投稿したチュートリアルへのコメントのおかげで、回避策を見つけることができました。

state_activated は Android API レベル 11 でのみ追加されるため、古いデバイスでは使用できません。しかし、彼らはstate_checkedを使用できるので、最新のレイアウトを含むフォルダーを追加するだけで済みlayout-v11ます(私にとっては.だった)。TextViewlayoutCheckedTextView

次に、 APIレベルを確認して、CheckedTextView をlist.onItemClickListener確認することができ ます。if(Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB)viewClicked.setChecked(!viewClicked.isChecked());

于 2013-08-03T23:43:47.263 に答える