如何使用图像创建ListItem并正确处理选择状态?

时间:2012-07-14 06:47:44

标签: android android-layout

我想创建一个ListView列表项,其中包含左侧的TextView和右侧的ImageButton,其选择状态的工作方式与ICS拨号程序应用程序(具体为历史记录选项卡)中的列表项相同。

当用户在拨号器应用程序中按下包含呼叫历史信息的列表项时,整个列表项行背景会改变颜色(为蓝色)。但是,如果用户按下电话图标,则只有电话图标的背景会改变颜色而不是整个列表项行。我想模仿这种行为,但我似乎无法让它正常工作。目前在我的应用程序中,如果用户按下列表项的TextView部分,ImageButton背景将更改为其按下的状态颜色,整个列表项行的背景也会更改(蓝色调)。但是,如果用户按下地图图标,地图图标将更改为其按下状态,并且列表项行背景不会更改为蓝色色调(在这种情况下,这就是我想要的)。

list_item_with_image.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_item_with_image_container"
android:layout_width="fill_parent"
android:layout_height="@dimen/list_item_height_default"
android:gravity="center_vertical"
android:paddingLeft="10dip"
android:paddingRight="10dp">
<TextView
    android:id="@+id/txtItem"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:textAppearance="?android:attr/textAppearanceSmall"/>
<ImageView
    android:id="@+id/list_item_divider"
    android:layout_width="wrap_content"
    android:layout_height="35dp"
    android:layout_centerVertical="true"
    android:layout_toLeftOf="@+id/map_btn"
    android:paddingRight="8dp"
    android:scaleType="fitXY"
    android:src="@drawable/list_divider_holo_light"/>
<ImageView
    android:id="@+id/map_btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:layout_marginRight="5dp"
    android:background="@drawable/map_btn_selector"
    android:onClick="mapBtnClick"/>
</RelativeLayout>

map_btn_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/map_pressed" android:state_pressed="true"/> <!-- pressed -->
<item android:drawable="@drawable/map_selected" android:state_focused="true"/> <!-- focused -->
<item android:drawable="@drawable/map"/> <!-- default -->
</selector>

0 个答案:

没有答案