android问题之Button自定义样式selector后,点击无效果

原创 2017年03月28日 11:12:55

问题:
自定义了一个button样式,如下,正常颜色为红色,按下为蓝色,但是点击无变色效果,一直为红色。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <corners android:radius="5dp"/>
            <solid android:color="@color/colorAccent"/>
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape>
            <corners android:radius="5dp"/>
            <solid android:color="@color/colorPrimaryDark"/>
        </shape>
    </item>
    <item android:state_focused="true">
        <shape>
            <corners android:radius="5dp"/>
            <solid android:color="@color/colorPrimaryDark"/>
        </shape>
    </item>
</selector>

解决:
将不带状态的样式放在最后,即可解决问题。

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

    <item android:state_pressed="true">
        <shape>
            <corners android:radius="5dp"/>
            <solid android:color="@color/colorPrimaryDark"/>
        </shape>
    </item>
    <item android:state_focused="true">
        <shape>
            <corners android:radius="5dp"/>
            <solid android:color="@color/colorPrimaryDark"/>
        </shape>
    </item>

    <!--不带状态-->
    <item>
        <shape>
            <corners android:radius="5dp"/>
            <solid android:color="@color/colorAccent"/>
        </shape>
    </item>

</selector>

原因:
selector中 item 是有顺序,类似于if语句,从上往下,当已有匹配的条件时,将不会再往下匹配。
所以,当无状态的 item 作为背景色放在第一位时,被匹配到了,所以不会再往下匹配。

参考:http://www.jianshu.com/p/939a6d5760d8

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liujunpen/article/details/67633602

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

继续简单粗暴,直接上代码。不获取焦点也不点击时Button的默认背景btn_unfocus_bg.xml:&amp;lt;?xml version=&quot;1.0&quot; encoding=&...
  • u014330846
  • u014330846
  • 2018-03-29 14:19:28
  • 6

自定义View selector无效

一个自定义的View 继承自 RelativeLayout 重写了 onTouchEvent()后 使用 selector 无效
  • u013258802
  • u013258802
  • 2017-10-11 13:58:11
  • 223

Selector无效的几种情况

前言在安卓开发中,经常会Selector来实现UI中的点按效果,以此回避重写相对复杂的OnTouchEvent事件方法,但是有没有遇到使用了Selector但点击无效果的情况呢?此文对会造成Selec...
  • w19961009
  • w19961009
  • 2016-02-17 22:51:33
  • 1242

Android--自定义Button的样式以及动态渐变效果

之前开发使用过自定义样式的Button,使用挺简单的,但也很常用,因此总结一下。      首先,自定义一个drawable文件custombutton.xml:...
  • HuoHao_Blogs
  • HuoHao_Blogs
  • 2017-05-31 16:56:32
  • 3868

android自定义控件,动态设置Button的样式

今天来看一个通过重写Button来动态实现一些效果,如圆角矩形、圆形、按下改变字体,改变背景色,改变背景图等在此说明一下,这种实现方式绝对不是唯一的,而且通过xml文件即可简单实现,这样做只是为了将控...
  • qq_28001749
  • qq_28001749
  • 2016-07-14 14:29:54
  • 3265

Android 各种按钮点击效果以及兼容性问题总结

全面的讲解按钮点击效果,图片的点击,Material Design风格的点击效果
  • tyzlmjj
  • tyzlmjj
  • 2015-11-29 15:43:19
  • 20242

Material Design-Button的新式样式初探

Material Design-Button的新式样式初探 知识点: 1、md设计的button介绍; 2、如何设置按钮的点击动画; 我们注意到,在android发布了一个新的...
  • qq_16628781
  • qq_16628781
  • 2016-05-26 10:57:17
  • 3055

android自定义Button样式(清晰简单)

最近在学习一下简单的控件,如Button,TextView等...但系统提供的样式大多都满足不了,所以我们需要自己来自定义样式来满足自己的需求。 下面跟大家分享一下最近学到的一种自定义方式,以下用Bu...
  • bigname22
  • bigname22
  • 2016-08-28 00:52:58
  • 1622

android button自定义触摸前以及触摸时的样式

1、在drawable下新建button_selector.xml,内容为: xml version="1.0" encoding="utf-8"?> selector xmlns:android=...
  • u013527937
  • u013527937
  • 2016-07-28 13:16:59
  • 1522

实现Android Button边框色和主体色不同,定制自己想要的button样式

Android Button 添加边框button控件属性是没有用来指定边框色的。也就是没办法像指定背景色那样直接用background属性就行了。那要完成以下样式,该如何做呢? 先在res/draw...
  • lin_13969
  • lin_13969
  • 2017-03-06 09:44:32
  • 824
收藏助手
不良信息举报
您举报文章:android问题之Button自定义样式selector后,点击无效果
举报原因:
原因补充:

(最多只允许输入30个字)