2

我将其选择用于列表

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/arrow"
    android:orientation="horizontal" >

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|left"
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="5dp"
        android:layout_weight="1"
        android:gravity="center_vertical"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/tvDescr"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical" >
        </TextView>
    </LinearLayout>

    <ImageView
        android:id="@+id/ivImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:maxHeight="20dp"
        android:minHeight="20dp" >
    </ImageView>

</LinearLayout>

和选择器 arrow.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item><shape>
            <gradient android:angle="90.0" android:endColor="#6495ED" android:startColor="#0000FF" android:type="linear" />

            <corners android:radius="5.0dp" />
        </shape></item>
    <item android:state_focused="true"><shape>
            <gradient android:angle="90.0" android:endColor="#BA55D3" android:startColor="#800080" android:type="linear" />

            <corners android:radius="5.0dp" />
        </shape></item>
    <item android:state_pressed="true"><shape>
            <gradient android:angle="90.0" android:endColor="#BA55D3" android:startColor="#800080" android:type="linear" />

            <corners android:radius="5.0dp" />
        </shape></item>

</selector>

结果是

在此处输入图像描述

- 不起作用,但如果我删除(以下来源)它将起作用

<item><shape>
                <gradient android:angle="90.0" android:endColor="#6495ED" android:startColor="#0000FF" android:type="linear" />

                <corners android:radius="5.0dp" />
            </shape></item>

在此处输入图像描述

但这并没有给我想要的结果,因为在您单击“列表按钮”后样式必须更改-但这不会发生

我要实现:

1)按下前的样式如图1

2)按下按钮后,按钮样式必须更改为2图片

3)保持这种状态,直到我点击另一个按钮 在此处输入图像描述

4

2 回答 2

1

请在您的列表视图中应用您的选择器,而不是 LinearLayout。

于 2012-09-06T11:32:35.497 回答
1

选择器是一个“状态列表可绘制”,即它“选择”<items>取决于它所应用的视图的状态。

StateListDrawable 是在 XML 中定义的可绘制对象,它使用多个不同的图像来表示相同的图形,具体取决于对象的状态。例如,一个 Button 小部件可以存在于几种不同状态中的一种(按下、聚焦或 niether),并且使用可绘制的状态列表,您可以为每个状态提供不同的背景图像。

这是语法,如文档中所示:

<selector xmlns:android="http://schemas.android.com/apk/res/android"
    android:constantSize=["true" | "false"]
    android:dither=["true" | "false"]
    android:variablePadding=["true" | "false"] >
    <item
        android:drawable="@[package:]drawable/drawable_resource"
        android:state_pressed=["true" | "false"]
        android:state_focused=["true" | "false"]
        android:state_hovered=["true" | "false"]
        android:state_selected=["true" | "false"]
        android:state_checkable=["true" | "false"]
        android:state_checked=["true" | "false"]
        android:state_enabled=["true" | "false"]
        android:state_activated=["true" | "false"]
        android:state_window_focused=["true" | "false"] />
</selector>

注意你可以在<item>.

这是典型选择器的示例..

<selector xmlns:android="http://schemas.android.com/apk/res/android" 
>
    <item
        android:state_focused="true" 
        android:state_pressed="false" 
android:drawable="@drawable/list_element_focused"   />
    <item
        android:state_focused="true" 
        android:state_pressed="true"
android:drawable="@drawable/list_element_focused_pressed"   />  
    <item
        android:state_focused="false" 
        android:state_pressed="true"
android:drawable="@drawable/list_element_pressed"   />  
    <item
android:drawable="@drawable/list_element_unfocused" />  
</selector>
于 2012-09-06T11:41:22.433 回答