4

私はGridViewの ChoiceMode を持つを持っていGridView.CHOICE_MODE_MULTIPLE_MODALます。ギャラリー アプリで表示されるものと同じように選択を動作させたいです (つまり、アイテムを長押しすると、選択したアイテムの前景色が半透明になり、選択されたことを示します。他のアイテムを短く押すと、追加または選択からそれらを削除します)。

次のような状態セレクターを作成しました。

<selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_mediumAnimTime">
  <item android:drawable="@drawable/pressed_background" android:state_activated="true"/>
  <item android:drawable="@drawable/pressed_background" android:state_checked="true"/>
  <item android:drawable="@drawable/pressed_background" android:state_selected="true"/>
  <item android:drawable="@drawable/pressed_background" android:state_pressed="true"/>
</selector>

pressed_background.xmlファイルは次のとおりです。

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

そしてそれが指す色:

<color name="pressed">#CC30d3dc</color>

次のようにグリッドに適用しています。

<GridView
    android:id="@+id/grid"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@id/header"
    android:layout_marginTop="8dp"
    android:columnWidth="112dp"
    android:divider="@null"
    android:dividerHeight="0dp"
    android:drawSelectorOnTop="true"
    android:listSelector="@drawable/selectable_background"
    android:numColumns="auto_fit"
    android:stretchMode="columnWidth" />

そして、ここXMLにグリッド項目があります:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent" >

<ImageView
    android:id="@+id/photo"
    android:layout_width="@dimen/add_photos_image_size"
    android:layout_height="@dimen/add_photos_image_size"
    android:layout_centerInParent="true" />

</RelativeLayout>

問題は、選択された状態がグリッド アイテムに表示されないことです。長押しを開始すると、グリッドアイテムの上に押した状態の色が期待どおりに表示されますが、選択されるとすぐに色が消え、アイテムが選択された状態であることを示すものはありません。コンテキスト アクション バーが期待どおりに表示されます。<selector>考えられる限り、 と グリッド アイテムの背景のさまざまなバリエーションを試しました。

4

0 に答える 0