我将其选择用于列表
<?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>
结果是
- 不起作用但如果我删除(下面的来源)它将起作用
<item><shape>
<gradient android:angle="90.0" android:endColor="#6495ED" android:startColor="#0000FF" android:type="linear" />
<corners android:radius="5.0dp" />
</shape></item>
但是它没有给我想要的结果,因为在你点击“list-button”之后风格必须改变 - 但这不会发生
我想:
1)按下之前的样式,如图1所示
2)按下按钮后,按钮样式必须更改为2图片
3)保持这种状态,直到我点击另一个按钮
答案 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>