问题
代码+图片展示:
layout.xml
<Button
android:id="@+id/dialog_positive_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:background="@drawable/login_btn_select"
android:textColor="@color/white"
android:text="确定"
/>
login_btn_select.xml
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/logonshape_gary2" android:state_enabled="false"/>
<item android:drawable="@drawable/logonshape_sel" android:state_pressed="true"/>
<item android:drawable="@drawable/logonshape_sel" android:state_focused="true"/>
<item android:drawable="@drawable/logonshape" android:state_focused="false"/>
</selector>
但是当运行时,点击前就变成了↓
为什么?
解决
分析login_btn_select.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<!--按钮失效时的样式-->
<item android:drawable="@drawable/logonshape_gary2" android:state_enabled="false"/>
<!--按下按钮的样式-->
<item android:drawable="@drawable/logonshape_sel" android:state_pressed="true"/>
<!--获得焦点时的样式-->
<item android:drawable="@drawable/logonshape_sel" android:state_focused="true"/>
<!--没获得焦点时的样式-->
<item android:drawable="@drawable/logonshape" android:state_focused="false"/>
</selector>
可以看到,获得焦点时的样式和没获得焦点时的样式不一样,只要改成一样就可以了,如下 【自己自定义样式】
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<!--按钮失效时的样式-->
<item android:drawable="@drawable/logonshape_gary2" android:state_enabled="false"/>
<!--按下按钮的样式-->
<item android:drawable="@drawable/logonshape_sel" android:state_pressed="true"/>
<!--获得焦点时的样式-->
<item android:drawable="@drawable/logonshape" android:state_focused="true"/>
<!--没获得焦点时的样式-->
<item android:drawable="@drawable/logonshape" android:state_focused="false"/>
</selector>
再运行: