button的点击效果学习起来其实比較easy,此点对开发人员来说也是使用的比較频繁的一个知识点,与它相关的还有编辑框的获取焦点时改变背景颜色、选择button选择时改变字体颜色等等。这些其实都是用到的drawable的seletor。

当然drawable中还有非常多其它效果能够实现,详细的能够參考笔者的还有一篇博客:

android改动控件外观(使用drawable资源)

效果:(不点击时显示白色,点击时显示灰色)

实现这个效果事实上非常easy,在drawable中创建一个xml文件,然后输入两行代码就可以解决。如图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

第一行表示点击时显示的图片,第二行表示初始状态显示的图片。

<?

xml version="1.0" encoding="utf-8"?

>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@android:color/darker_gray"/>
<item android:drawable="@android:color/white"/> </selector>

然后直接在button的background中设置这个xml文件就可以,代码例如以下:

activity_main:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="button測试"
android:background="@drawable/simple_button_style"
/>
</LinearLayout>

常见问题:

在selector中设置了点击效果和初始状态效果时,点击却没有反应。错误效果以及代码例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

读者能够发现。与正确的代码相比,后者仅仅是改变了两行代码的顺序。

这里就涉及到seletor选择图片的机制了。一旦选择到了合适的图片,那么就不会进行之后的推断了。

拿正确的代码举例来说,首先是推断button是否有被点击,假设没有,就不显示灰色,往下继续选择,然后就到了第二行,第二行提供的背景为白色,即显示白色。

在错误的代码中。第一行没有条件。即直接选择白色,跳出选择,就不会进行之后是否有被点击的推断,所以点击效果不会显示。

如笔者有的不清楚的地方,欢迎读者私信或者评论。

对drawable有兴趣的读者能够參考笔者的还有一篇博客:android改动控件外观(使用drawable资源)

android selector设置button点击效果(具体)以及常见问题的更多相关文章

  1. Android Button点击效果(按钮背景变色、文字变色)

    一. 说明 Android Button的使用过程中,我们会需要为Button添加点击效果,不仅仅按钮的背景色需要变化,而且有时,我们连文字的颜色都希望变化,我们可以使用StateListDrawab ...

  2. Android 纯代码加入点击效果

    项目中非常多的Button, 同一时候配置非常多button切图,Selector是不是非常烦, 使用以下这个类,就能够直接为Button添加点击效果. 不用多个图片,不用Selector. 使用方法 ...

  3. Android MaterialDesign之水波点击效果的几种实现方法

    什么是水波点击的效果? 下面是几种不同的实现方法的效果图以及实现方法   Video_2016-08-31_003846 如何实现? 方法一 使用官方提供的RippleDrawable类 优点:使用方 ...

  4. Android之水波纹点击效果(RippleView)

    Android5.0后各种炫的效果纷纷出来,写这篇博客主要是讲的是按钮点击效果带有的水波纹(波浪式). 当然我写的这个是自定义来实现的,在低版本(5.0一下)也可以实现点击效果.看看效果图: 上图可看 ...

  5. android ListView中button点击事件盖掉onItemClick解决办法

    ListView 1.在android应用当中,很多时候都要用到listView,但如果ListView当中添加Button后,ListView 自己的 public void onItemClick ...

  6. <已解决>使用selector设置Button按下松开的样式以及 <item> tag requires a 'drawable' attribute or child tag defining a drawable 报错

    <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="ht ...

  7. Android设置常见控件点击效果

    一. Imageview的点击效果——图片稍微变暗突出点击效果 public class ClickImageView extends AppCompatImageView { public Clic ...

  8. Android之Button自定义点击效果

    我们在界面上经常会用到button按钮,但通常button点击后看不到点击的效果,如果用户连续点击了两次,就会报NAR错误,这样交互性就比较差了.如果我们自定义了button点击效果,比如我们点击了b ...

  9. Android仿Win8界面的button点击

    今天没事的时候,感觉Win8的扁平化的button还是挺好看的,就研究了下怎样在安卓界面实现Win8的扁平化button点击效果. 发现了一个自己定义的View能够实现扁平化button效果,话不多说 ...

随机推荐

  1. TP框架传值

    /*TP框架传值*/ location.href = "../add/add/department/"+department+"/username/"+user ...

  2. kissy延迟加载demo

    <!doctype html><html><head>    <meta charset="gbk"/>    <title& ...

  3. ajax同时提交表单且包含文件

    说明一下:FormData对象是html5的一个对象,目前的一些主流的浏览器都已经兼容.ie8暂时不支持,不支持FormData的,可以使用方法二,下面会介绍.接着说FormData,它是一个html ...

  4. 小程序使用wepy框架自定义loading组件

    1:定义组 <template> <view class="app-loading-container" style="{{options.cssTex ...

  5. 一句话木马和中国菜刀的结合拿webshell

    什么叫做一句话木马:     就是一句简单的脚本语言,一句话木马分为Php,asp,aspx等 中国菜刀:   连接一句话木马的工具 实验的目的:  通过一句话木马来控制我们的服务器,拿到webshe ...

  6. Mysql学习总结(26)——MySQL子查询

    mysql中虽然有连接查询实现多表连接查询,但是连接查询的性能很差,因此便出现了子查询. 1.理论上,子查询可以出现在查询语句的任何位置,但实际应用中多出现在from后和where后.出现在from后 ...

  7. ZOJ 1825 Compound Words

    Compound Words Time Limit: 5000ms Memory Limit: 32768KB This problem will be judged on ZJU. Original ...

  8. java实现上传图片

    1.将图片上传到tomcat下 2.将相对路径存放到数据库中 @RequestMapping(params="upLoadPicture") @ResponseBody publi ...

  9. 如何将网站升级为HTTPS协议(整理)

    如何将网站升级为HTTPS协议(整理) 一.总结 一句话总结: 获取证书(有免费有付费):证书是一个二进制文件,里面包含经过认证的网站公钥和一些元数据,要从经销商购买. 安装证书:证书可以放在/etc ...

  10. FZOJ--2212--Super Mobile Charger(水题)

    Problem 2212 Super Mobile Charger Accept: 3    Submit: 11 Time Limit: 1000 mSec    Memory Limit : 32 ...