Android为按钮设置按压后的不同状态

为按钮设置不同状态的drawable的用到的是StateListDrawable

下面用一个例子来说明如何使用

先通过shapeDrawable来实现两个圆角矩形,不过颜色不一样,即按钮后显示的颜色不一样

shape_btn_normal.xml

xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#DD788A"/>
    <corners android:radius="5dp"/>
    <padding android:top="2dp" android:bottom="2dp"/>
shape>
shape_btn_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="#F8BBD0"/>
    <corners android:radius="5dp"/>
    <padding android:top="2dp" android:bottom="2dp"/>
shape>


两者的区别在颜色不一样。

然后再写一个selctor:selctor_btn.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/shape_btn_pressed"/>
    <item android:drawable="@drawable/shape_btn_normal"/>
selector>
即可实现当按钮时,显示的drawable为shape_btn_pressed的状态。

没有按压按钮时,则显示drawable为shape_btn_normal的状态。

最后在activity_main.xml中写一个Button控件:

<Button
    android:text="设置"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/selctor_btn"/>

即完成最终实现为按钮设置不同状态的效果。

你可能感兴趣的:(Android)