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

creating a icon button that has a selector xml file as background

我正在尝试制作一个图标按钮,当用户点击它时,作为点击效果,图标的颜色会发生变化。为此,我尝试了 select 或 xml 文件 select 不同的 png 文件,这是一个简单的 selector 代码,我认为它可以工作,但必须有我缺少的东西,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>

然而,当我尝试 运行 模拟器上的应用程序时,它崩溃了!日志中没有任何内容,因此我可以判断出问题所在。但是当我只尝试一个 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 文件应该在您的 drawable 目录中。因此,当您为 Button 设置背景时,它将使用选择器 xml 文件作为 Button 的 'background'。