4

私は HorizantalListView で作業していますが、リストの要素をタップすると、それが選択されていることを表示したいので、別の画像がクリックされなくなるまで選択したままにする必要があります。

ここに画像の説明を入力

4

3 に答える 3

4

imageView ではなく、トグル ボタンにします。次に、対応する各状態で必要なさまざまな画像を使用して、xml にセレクターを作成します。(同じことが imageView でできるかどうかはわかりません。そのため、トグルボタンを使用するように言いました)。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
        android:drawable="@drawable/button_pressed"/>
    <item android:state_pressed="false"
            android:drawable="@drawable/button_rested"/>
    <item android:state_enabled="false"
            android:drawable="@drawable/button_disabled"/>
</selector>

レイバウトで

<ToggleButton android:id="@+id/image" android:layout_width="fill_parent"
     android:layout_height="wrap_content" android:background="@null" android:gravity="center_horizontal" 
     android:src="@drawable/button_selector"/>
于 2012-06-20T07:39:46.847 に答える
1

これは、セレクターを使用してXMLで行うか、プログラムでonItemClickListener(..)を使用して行うことができます。

1つの不完全な例:

item_selector.xml

<item android:state_focused="true" android:state_pressed="true"
    android:drawable="@drawable/list_selector_background_transition" />

<item android:state_focused="true" android:state_pressed="false"
    android:drawable="@drawable/list_selector_background_transition" />

そして、ImageViewsの代わりに、この目的のためにImageButtonsを使用してください。

<ImageButton
android:id="@+id/icon"
android:layout_width="50px"
android:layout_height="wrap_content"
android:src="@drawable/item_selector"/>
于 2012-06-20T07:45:49.340 に答える
1

これが私がやった方法です-私の画像はcursorAdapterから来ていたので

1.) アダプターで、関数を書きました

/***
     * To change the colour of list item selected
     * 
     * @param position
     */
    public void setSelected(int position) {
        selectedPosition = position;
    }

2.) カーソル アダプタを継承するクラスの BindView 内

// Change the background color
        if (x == selectedPosition) {
            holder.title.setBackgroundResource(R.color.red);
        }

画像が修正されている場合は、xml レイアウトでセレクターを使用できます

于 2012-06-20T07:38:54.287 に答える