解决Android用Selector自定义Button样式没有效果的问题

继续简单粗暴,直接上代码。

不获取焦点也不点击时Button的默认背景btn_unfocus_bg.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="@dimen/dp_4" />
    <solid android:color="#f1f1f1" />
</shape>

获取焦点但是不点击时Button的背景btn_focus_bg.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="@dimen/dp_4" />
    <solid android:color="@color/yellow" />
</shape>

点击时Button的背景btn_press_bg.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="@dimen/dp_4" />
    <solid android:color="@color/red" />
</shape>

selector_btn.xml : 

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/btn_press_bg" android:state_focused="true" android:state_pressed="true" />
    <item android:drawable="@drawable/btn_press_bg" android:state_focused="false" android:state_pressed="true" />
    <item android:drawable="@drawable/btn_focus_bg" android:state_focused="true" android:state_pressed="false" />
    <!--默认时的背景图片-->
    <item android:drawable="@drawable/btn_unfocus_bg" />

</selector>

selector文件中注意默认的背景图片标签放到最后,这也是很多selector 没有效果的原因。

最后,在布局文件中引用:

<Button
    android:id="@+id/btn"
    android:layout_width="@dimen/dp_267"
    android:layout_height="@dimen/dp_59"
    android:layout_marginTop="@dimen/dp_127"
    android:gravity="center"
    android:textColor="#171C2D"
    android:background="@drawable/selector_btn"
    android:textSize="@dimen/dp_23" />

猜你喜欢

转载自blog.csdn.net/u014330846/article/details/79741942