2

我想我已经得到了所需的东西。我想更改 state_pressed 上按钮的颜色。我有以下资源:

color.xml 中的值具有以下内容:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="blue">#045FB4</color>
    <color name="clicked">#A9E2F3</color>
</resources>

可绘制文件夹中的 button_dashboard 具有以下内容:

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

    <item android:drawable="@color/blue" />
    <item android:drawable="@color/clicked" android:state_pressed="true"/>

</selector>

最后是我布局中的这个按钮:

<Button
        android:id="@+id/button2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1.0"
        android:background="@drawable/button_dashboard"
        android:text="Button" />

难道我做错了什么?我还没有编写任何 onClick 代码,因为此时不需要(只是试验)。

4

6 回答 6

3

尝试:

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

        <item android:drawable="@color/clicked" android:state_pressed="true"/>
        <item android:drawable="@color/blue" />


    </selector>
于 2013-09-19T07:34:32.047 回答
1

将drawable文件夹中button_dashboard的内容更改为此

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" >
        <shape>
            <solid
                android:color="@color/clicked" />

        </shape>
    </item>
    <item>
        <shape>
            <solid
                android:color="@color/blue" />
        </shape>
    </item>
</selector>

最后是布局中的这个按钮:

<Button
        android:id="@+id/button2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1.0"
        android:background="@drawable/button_dashboard"
        android:text="Button" />

希望这可以帮助..

于 2013-09-19T07:44:28.570 回答
0

在 button_dashboard 中再添加一行

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

    <item android:drawable="@color/clicked" android:state_pressed="true"/>
    <item android:drawable="@color/clicked" android:state_selected="true"/>
    <item android:drawable="@color/blue" />

</selector>

在此之后,请在您的按钮点击监听器中添加一行代码

button2.setSelected(true);

希望这会帮助你。

于 2013-09-19T08:01:28.787 回答
0

这个怎么样?

<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">    
    <item android:state_pressed="true">        
        <color android:color="@color/clicked" />    
    </item>    
    <item android:state_pressed="false">        
        <color android:color="@color/blue" />    
    </item>
 </selector>
于 2013-09-19T08:20:42.050 回答
0

使用这个drawable/selector.xml

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

并在 oncreate 方法中设置为按钮的背景

btn.setBackgroundResource(R.drawable.selector);
于 2013-09-19T07:39:03.697 回答
0

将以下行添加到您的按钮布局中:

android:clickable="true"

所以你布局中的按钮现在应该是:

<Button
        android:id="@+id/button2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1.0"
        android:clickable="true"
        android:background="@drawable/button_dashboard"
        android:text="Button" />
于 2013-09-19T07:39:42.387 回答