先看效果图

正常状态

使用shape自定义button状态_选择器

按下状态

使用shape自定义button状态_android_02

<Button
android:id="@+id/textview"
android:layout_width="match_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:text="发送验证码"
android:background="@drawable/bg_selector"
android:textColor="@color/tv_selector"
android:layout_centerInParent="true"
android:layout_height="wrap_content"
/>

这里比较重要的两个点是button的背景和文字的颜色,这里我们都用了选择器,不同的是文字的选择器放在color目录下,按钮的选择器放在了drawable目录下

文字选择器

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#000000" android:state_pressed="true"/>
<item android:color="#ffffff" android:state_pressed="false"/>
</selector>

按钮选择器

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false">
<shape>
<solid android:color="#E95A4A"/>
<corners android:radius="8dp"/>
</shape>
</item>
<item android:state_pressed="true">
<shape>
<solid android:color="#00ff00"/>
<corners android:radius="8dp"/>
</shape>
</item>
</selector>