选择器不工作

时间:2012-09-06 11:21:23

标签: android

我将其选择用于列表

<?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>

和selector 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>

结果是

enter image description here

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

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

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

enter image description here

但是它没有给我想要的结果,因为在你点击“list-button”之后风格必须改变 - 但这不会发生

我想:

1)按下之前的样式,如图1所示

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

3)保持这种状态,直到我点击另一个按钮 enter image description here

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

选择器是'state-list-drawable',即它'选择'<items>,具体取决于它所应用的视图的状态。

  

StateListDrawable是一个用XML定义的可绘制对象,它使用一个   几个不同的图像代表相同的图形,取决于   对象的状态。例如,Button小部件可以存在于一个小部件中   几种不同的状态(按压,聚焦或者不同)和使用   一个状态列表可绘制,您可以提供不同的背景图像   对于每个州。

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

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