博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 用代码来实现selector
阅读量:5312 次
发布时间:2019-06-14

本文共 1889 字,大约阅读时间需要 6 分钟。

 众所周知,android可以通过XML文件来创建selector,以Drawable对象的形式安装到组件上,以提供统一的风格设置。但是在某些时候,我们需要通过代码的形式来实现相同的功能,例如组件数量非常多,对应不同的图片,这时候如果还用XML的话就需要创建大量的selector文件,非常繁琐。

    例如一个TextView使用了如下的selector

 里面所引用的图片资源文件非常多,如果每个文件都对应一个XML的文件的话,就会非常繁琐,修改起来非常麻烦。

  实际上,所有XML设定能做的事情,android里同样可以用编码的方式来实现,像上面那个XML文件,就可以就下面的代码来实现:

StateListDrawable drawable = new StateListDrawable();        //Non focused states        drawable.addState(new int[]{-android.R.attr.state_focused, -android.R.attr.state_selected, -android.R.attr.state_pressed},                getResources().getDrawable(R.drawable.contact));        drawable.addState(new int[]{-android.R.attr.state_focused, android.R.attr.state_selected, -android.R.attr.state_pressed},                getResources().getDrawable(R.drawable.contact_sel));        //Focused states        drawable.addState(new int[]{android.R.attr.state_focused,-android.R.attr.state_selected, -android.R.attr.state_pressed},                getResources().getDrawable(R.drawable.contact_sel));        drawable.addState(new int[]{android.R.attr.state_focused,android.R.attr.state_selected, -android.R.attr.state_pressed},                getResources().getDrawable(R.drawable.contact_sel));        //Pressed        drawable.addState(new int[]{android.R.attr.state_selected, android.R.attr.state_pressed},                getResources().getDrawable(R.drawable.contact_sel));        drawable.addState(new int[]{android.R.attr.state_pressed},                getResources().getDrawable(R.drawable.contact_sel));                  TextView textView = (TextView) findViewById(R.id.TextView_title);                         textView.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null);

注意里面的“-”号,当XML的设定是false时,就需要使用资源符号的负值来设定。

转载于:https://www.cnblogs.com/zhujiabin/p/4447685.html

你可能感兴趣的文章
dedecms讲解-arc.listview.class.php分析,列表页展示
查看>>
Extjs6 经典版 combo下拉框数据的使用及动态传参
查看>>
【NodeJS】http-server.cmd
查看>>
研磨JavaScript系列(五):奇妙的对象
查看>>
面试题2
查看>>
selenium+java iframe定位
查看>>
P2P综述
查看>>
第五章 如何使用Burp Target
查看>>
Sprint阶段测试评分总结
查看>>
sqlite3经常使用命令&语法
查看>>
linux下编译openjdk8
查看>>
【python】--迭代器生成器装饰器
查看>>
Pow(x, n)
查看>>
安卓当中的线程和每秒刷一次
查看>>
每日一库:Modernizr.js,es5-shim.js,es5-safe.js
查看>>
ajax连接服务器框架
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
利用maven管理项目之POM文件配置
查看>>
TCL:表格(xls)中写入数据
查看>>
Oracle事务
查看>>