Android开发中 Button 背景控制选择器

方式一:使用纯色背景(color

如果你只需要在不同状态下改变按钮的颜色,这是最简单的方法。

  1. res/color 目录下创建 XML 文件: 例如,创建一个名为 button_background_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:color="#FF5722" />
    <item android:state_enabled="false" android:color="#B0BEC5" />
    <item android:state_focused="true" android:color="#FF7043" />
    <item android:color="#2196F3" />
</selector>
  1. 在布局文件中使用: 直接将这个 XML 文件作为按钮的 backgroundTint 属性引用。
<Button
    android:id="@+id/my_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="点击我"
    android:textColor="@android:color/white"
    android:backgroundTint="@color/button_background_selector" />
方式二:使用带圆角的形状背景(shape

这种方式更为常用,因为它不仅能改变颜色,还能控制按钮的形状、圆角、边框等样式。

1 . res/drawable 目录下创建 XML 文件:

- 首先,为每种状态创建一个单独的 shape 文件。

  • 默认状态:button_default.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#2196F3" />
    <corners android:radius="8dp" />
    <padding android:left="16dp" android:top="8dp"
        android:right="16dp" android:bottom="8dp" />
</shape>
  • 按下状态:button_pressed.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#1976D2" />
    <corners android:radius="8dp" />
    <padding android:left="16dp" android:top="8dp"
        android:right="16dp" android:bottom="8dp" />
</shape>
  • 禁用状态:button_disabled.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#B0BEC5" />
    <corners android:radius="8dp" />
    <padding android:left="16dp" android:top="8dp"
        android:right="16dp" android:bottom="8dp" />
</shape>
  • 焦点状态
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#1E88E5" />
    <corners android:radius="8dp" />
    <stroke android:width="2dp" android:color="#FF5722" />
    <padding android:left="16dp" android:top="8dp"
        android:right="16dp" android:bottom="8dp" />
</shape>
  1. 创建 selector 文件来引用这些 shape 文件: 创建一个名为 button_background_selector.xml 的文件,放在 res/drawable 目录下。
<?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/button_pressed" />
    <item android:state_enabled="false" android:drawable="@drawable/button_disabled" />
    <item android:state_focused="true" android:drawable="@drawable/button_focused" />
    <item android:drawable="@drawable/button_default" />
</selector>
  1. 在布局文件中使用: 直接将这个 selector 文件作为按钮的 background 属性引用。
<Button
    android:id="@+id/my_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="点击我"
    android:textColor="@android:color/white"
    android:background="@drawable/button_background_selector" />
posted @ 2025-09-10 14:16  PlainText  阅读(19)  评论(0)    收藏  举报