私のアプリケーションでは、タブレットの gmail アプリと同様のことを行いたいと考えています。左側にはアイテムのリストがあり、右側にはそのアイテムのコンテンツを含むフラグメントがあります。gmail アプリの場合、このコンテンツは選択後にダウンロードされます. アイテムをクリックした後、もちろん選択を変更するまで、それを強調表示したままにします。これが機能するポイントに到達しましたが、同じアイテムを2回クリックした場合にのみ、最初にクリックすると選択が機能し、アイテムは「デフォルト」の状態に戻り、もう一度クリックするとセレクター(選択済みの場合)状態)が見えます。
これは私がこれまでに持っているものです:
1) セレクター (listitem_background.xml)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/solid_white" android:state_pressed="false" android:state_selected="false"/>
<item android:drawable="@drawable/listitem_pressed" android:state_pressed="true"/>
<item android:drawable="@drawable/listitem_focused" android:state_selected="true"/>
</selector>
2) リスト アイテムの上部の線形レイアウトの場合:
android:background="@drawable/listitem_background"
(これもlistselectorとして設定してみました)
3) これは ListView です。
<ListView
android:id="@+id/my_list_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:choiceMode="singleChoice"
android:dividerHeight="1dp"
android:drawSelectorOnTop="true"
android:fadeScrollbars="true"
android:fastScrollEnabled="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:scrollbarFadeDuration="100"
android:scrollbars="vertical" />
4)コード部分で、これで遊んでみました:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
view.setSelected(true);
...
}
[編集] 実際、画面の右側にあるフラグメントのコミット後に選択が失われていることに気付きました。フラグメントをコミットしない場合、それは魅力のように機能します...セレクターに次のようなものが必要だと思います:
<item android:drawable="@drawable/listitem_focused" android:state_activated="true" android:state_focused="false"/>
しかし、明らかにこれではありません...