-1

目前我正在使用这个选择器:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_pressed="true"
   android:drawable="@color/green" /> <!-- pressed -->
  <item android:state_focused="true"
   android:drawable="@color/green" /> <!-- focused -->
</selector>

我希望我为我的按钮设置默认可绘制对象,以防它没有被按下并且没有聚焦。我应该如何修改我的选择器来做到这一点?

4

2 回答 2

0

尝试这个:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Non focused states -->
    <item android:drawable="@drawable/button" 
        android:state_focused="false" 
        android:state_pressed="false" 
        android:state_selected="false"/>
    <!-- Pressed -->
    <item android:drawable="@drawable/button_pressed" 
        android:state_focused="false" 
        android:state_pressed="true" 
        android:state_selected="false"/>
</selector>
于 2013-12-27T11:09:44.023 回答
0

在res/values/colors.xml文件中为各种状态定义不同的颜色如下(请使用您自己的十六进制代码作为颜色)

<color name="green_pressed">#ff00f000</color>
<color name="green_focused">#ff00f700</color>
<color name="green_default">#ff00ff00</color>

为不同的状态声明各种可绘制对象

button_focused_green.xml

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

    <solid android:color="@color/green_focused" />
    <!-- optional, remove if you don't want round border -->
    <corners android:radius="4dp" />
</shape>

button_pressed_green.xml

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

    <solid android:color="@color/green_pressed" />
    <!-- optional, remove if you don't want round border -->
    <corners android:radius="4dp" />
</shape>

button_default_green.xml

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

    <solid android:color="@color/green_default" />
    <!-- optional, remove if you don't want round border -->
    <corners android:radius="4dp" />
</shape>

声明一个StateListDrawablein xml 文件,该文件将应用于Button

button_green.xml

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

    <item android:drawable="@drawable/button_focused_green" android:state_focused="true"/>
    <item android:drawable="@drawable/button_pressed_green" android:state_pressed="true"/>        
    <item android:drawable="@drawable/button_default_green"/>

</selector>

Button在布局 xml 中设置 background 属性

<Button 
    ...
    android:background="@drawable/button_green"
.../>

希望这可以帮助。

于 2013-12-27T11:44:51.053 回答