博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为节省内存,动态添加view布局和控件
阅读量:4699 次
发布时间:2019-06-09

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

1如果一个自定义view要在短时间被多次调用,会造成多次读取xml和findViewById,所以动态添加控件、属性

RelativeLayout:

private void initView() {

Button btn1 = new Button(this.getContext());
btn1.setId(1);
RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params1.addRule(ALIGN_PARENT_LEFT);
btn1.setText("1");
this.addView(btn1,params1);
Button btn2 = new Button(this.getContext());
btn2.setId(2);
RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params2.addRule(RIGHT_OF,btn1.getId());
btn2.setText("2");
this.addView(btn2,params2);

Button btn3 = new Button(this.getContext());

btn3.setId(3);
RelativeLayout.LayoutParams params3 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params3.addRule(RIGHT_OF,btn2.getId());
btn3.setText("3");
this.addView(btn3,params3);

this.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT));

}

 

不setId的话,getId默认返回-1,无法使用RIGHT_OF

转载于:https://www.cnblogs.com/Ringer/p/4309727.html

你可能感兴趣的文章
查看手机已经记住的WIFI密码
查看>>
最新版IntelliJ IDEA2019 破解教程(2019.08.07-情人节更新)
查看>>
C# 两个datatable中的数据快速比较返回交集或差集
查看>>
关于oracle样例数据库emp、dept、salgrade的mysql脚本复杂查询分析
查看>>
adb shell am 的用法
查看>>
iOS10 UI教程视图和子视图的可见性
查看>>
FindChildControl与FindComponent
查看>>
中国城市json
查看>>
android下载手动下载Android SDK
查看>>
C++学习:任意合法状态下汉诺塔的移动(原创)
查看>>
leetcode133 - Clone Graph - medium
查看>>
一点小基础
查看>>
PHP 自动加载类 __autoload() 方法
查看>>
JDK中的Timer和TimerTask详解(zhuan)
查看>>
【python练习】ATM&购物商城程序
查看>>
nginx 日志问题(\x22)
查看>>
装饰器、迭代器、生成器
查看>>
一元运算符重载
查看>>
UNET学习笔记2 - 高级API(HLAPI)
查看>>
"ORA-00942: 表或视图不存在 "的原因和解决方法[转]
查看>>