在自定义组合控件中,有可能会自定义属性来给某些组件设置background。
比如说我这里有一组Button,一上手,你可能会这么写:

        if (attrs != null) {            TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TableView, defStyleAttr, 0);            Drawable d = a.getDrawable(R.styleable.TableView_ButtonBackground);            for (Button b : mButtons) {                if (d != null) {                    b.setBackground(d);                }            }            a.recycle();        }

这样写的结果就是,不论点击那个Button,都是最后一个Button有点击效果,其实这也是一个很简单问题,因为所有的Button都设置的都是这一个Drawable对象。所以应该这样写:


if (attrs != null) {
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TableView, defStyleAttr, 0);
for (Button b : mButtons) {
Drawable d = a.getDrawable(R.styleable.TableView_ButtonBackground);
if (d != null) {
b.setBackground(d);
}
}
a.recycle();
}

更多相关文章

  1. Android:SlidingMenu(侧滑菜单)用法示例
  2. Settings设置页面的Preference使用方法
  3. 关于SearchView的一些小细节
  4. Android(安卓)MediaRecorder 录制视频 start failed 的原因及解
  5. android之基于Echart的图表
  6. android osmdroid 实现谷歌地图之定位 替换为其他
  7. android 使用xmpp smack openfire实现即时通讯(一)
  8. Android(安卓)TextView加载HTMl图文之添加点击事件和查看图片
  9. Android(安卓)5.0学习之定义阴影

随机推荐

  1. Android(安卓)JNI环境搭建及开发入门
  2. Android(安卓)API 指南
  3. 如何让Android屏幕只能上下翻转
  4. Android:控件GridView的使用实例
  5. android获取gps坐标
  6. [Android(安卓)Pro] Android(安卓)fastbo
  7. Android(安卓)自定义标题栏(title栏)
  8. android Theme使用四
  9. Android(安卓)邮件发送(一键发送, 163邮
  10. 仿照利用android系统源码资源文件,修改See