解决给一组Button设置Background导致点击效果错乱问题
16lz
2021-01-26
在自定义组合控件中,有可能会自定义属性来给某些组件设置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();
}
更多相关文章
- Android:SlidingMenu(侧滑菜单)用法示例
- Settings设置页面的Preference使用方法
- 关于SearchView的一些小细节
- Android(安卓)MediaRecorder 录制视频 start failed 的原因及解
- android之基于Echart的图表
- android osmdroid 实现谷歌地图之定位 替换为其他
- android 使用xmpp smack openfire实现即时通讯(一)
- Android(安卓)TextView加载HTMl图文之添加点击事件和查看图片
- Android(安卓)5.0学习之定义阴影