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

这是我的做法 - 我的图像来自 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 回答
1

您可以使用选择器对 XML 执行此操作,或者使用onItemClickListener(..)以编程方式执行此操作

一个不完整的例子:

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 回答