创建一个以选择器XML文件为背景的图标按钮



我试图使一个图标按钮,当用户点击它,作为点击效果,图标的颜色改变。为此,我尝试了一个选择器xml文件,选择不同的png文件,这是一个简单的选择器代码,我认为它会起作用,但必须有一些东西,我错过了,xml文件看起来像这样:

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

然而,当我尝试在模拟器上运行应用程序时,它崩溃了!log里什么也没有,所以我可以知道问题是什么。但是当我尝试一个PNG文件作为按钮的背景时,它工作了!该按钮的XML代码如下所示:

<Button
            android:id="@+id/about_icon1"
            android:background="@drawable/button_continue"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:alpha="0.5" />

我该如何解决这个问题?

你的选择器只有state_pressed true和false(这不能使用),它没有默认的一个。试着这样做:

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

在你设置按钮布局的xml中:

<Button
        android:id="@+id/about_icon1"
        android:background="@drawable/your_selector_xml_name"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:alpha="0.5" />

注意,你应该把上面的选择器代码放在另一个xml文件中,这个xml文件应该在你的可绘制目录中。所以当你为你的按钮设置背景时它会使用selector xml文件作为你的按钮的背景。

最新更新