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

版权声明:本文为博主原创文章,未经博主允许不得转载。

【Done】使用selector设置按钮不同状态的样式(Android)

摘要:开发中经常遇到按钮可用/不可用状态显示不同样式,按下/不按下显示不同样式,这样的信息写在代码里太过复杂和冗余,采用drawable文件selector的方式能事半功倍 一、了解selecto...
  • haidilinghou
  • haidilinghou
  • 2015年11月10日 09:15
  • 3229

andrid定义Button的样式和选中样式

AFNetwork是一个轻量级的网络请求api类库。是以NSURLConnection, NSOperation和其他方法为基础的。 下面这个例子是用来处理json请求的: NSURL *url =...
  • daiyelang
  • daiyelang
  • 2014年07月04日 10:08
  • 3141

android radioButton 选中后改变字体颜色样式

radioButton用radioGroup包起来 如下为样式:             选中为红色,未选中默认为黑色...
  • lfqsy
  • lfqsy
  • 2016年08月25日 13:46
  • 2672

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

全面的讲解按钮点击效果,图片的点击,Material Design风格的点击效果
  • tyzlmjj
  • tyzlmjj
  • 2015年11月29日 15:43
  • 17769

Android之Button自定义点击效果

我们在界面上经常会用到button按钮,但通常button点击后看不到点击的效果,如果用户连续点击了两次,就会报NAR错误,这样交互性就比较差了。如果我们自定义了button点击效果,比如我们点击了b...
  • chaoyu168
  • chaoyu168
  • 2015年10月29日 08:56
  • 1476

【Done】使用selector设置按钮不同状态的样式(Android)

摘要:开发中经常遇到按钮可用/不可用状态显示不同样式,按下/不按下显示不同样式,这样的信息写在代码里太过复杂和冗余,采用drawable文件selector的方式能事半功倍 一、了解selecto...
  • haidilinghou
  • haidilinghou
  • 2015年11月10日 09:15
  • 3229

Android之Button自定义点击效果

我们在界面上经常会用到button按钮,但通常button点击后看不到点击的效果,如果用户连续点击了两次,就会报NAR错误,这样交互性就比较差了。如果我们自定义了button点击效果,比如我们点击了b...
  • chaoyu168
  • chaoyu168
  • 2015年10月29日 08:56
  • 1476

Android中的Button自定义点击效果之改变点击时按钮的颜色

在Android中定义按钮的点击效果可以通过自定义selector,通过设置两张不同的背景图片来改变点击时和未点击时的状态,但有时候仅仅只想改变点击时按钮的颜色,但是在selector中并不能直接定义...
  • u013309870
  • u013309870
  • 2016年10月25日 22:14
  • 3003

android selector设置button点击效果(详细)以及常见问题

button的点击效果学习起来事实上比较容易,此点对开发者来说也是使用的比较频繁的一个知识点,与它相关的还有编辑框的获取焦点时改变背景颜色、选择button选择时改变字体颜色等等。这些其实都是用到的d...
  • Double2hao
  • Double2hao
  • 2016年02月02日 10:17
  • 20123

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

全面的讲解按钮点击效果,图片的点击,Material Design风格的点击效果
  • tyzlmjj
  • tyzlmjj
  • 2015年11月29日 15:43
  • 17769
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android问题之Button自定义样式selector后,点击无效果
举报原因:
原因补充:

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