Android如何使用代码动态生成界面
发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,这篇文章主要介绍Android如何使用代码动态生成界面,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!我们最常用使用XML来编写Android应用程序的UI,这样的好处是方便快捷
千家信息网最后更新 2025年11月16日Android如何使用代码动态生成界面
这篇文章主要介绍Android如何使用代码动态生成界面,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
我们最常用使用XML来编写Android应用程序的UI,这样的好处是方便快捷可视化,而且维护和修改特别容易,但是它是静态的。如果我们要做的程序的界面是固定的,用XML固然是最好的选择,但是如果我们需要动态、灵活地控制UI,使用代码来动态生成UI无疑使最好的办法。
在XML中,我们使用的五大布局:LinearLayout(线性布局)、RelativeLayout(相对布局)、TableLayout(表格布局)、AbsoluteLayout(绝对布局)和FrameLayout(帧布局)在Android中也有对应的类来表示。
举个例子,我现在需要显示一个表格,表格的行数和列数及其内容都不确定,如果在XML中,这是不可能实现的。
先给大家看一下成品:(下面的代码只给大家展示如何实现,表格里面的内容忽略)
首先,新建一个不带任何控件的XML文件
在代码中新建一个TableLayout:
// TODO 显示表格信息 private void displayRegeditedInfo() { Iterator iterator = iterable.iterator(); ICells iCells = GlobalVariable.manager .createPersonDataCells(IInspectionManager.CS_PERSON_LIST_CELLS); boolean flag = true;// 标题栏为true,内容栏位false int colorChange = 1;// 用来判断单双行,以显示不同的颜色 TableLayout tableLayout = (TableLayout) findViewById(R.id.tableLayout); tableLayout.setStretchAllColumns(true); tableLayout.setShrinkAllColumns(true); while (iterator.hasNext()) { // 行的样式 TableRow.LayoutParams params = new TableRow.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT); if (flag)// 首先显示表格的标题栏,内容自己定义 { TableRow titleRow = new TableRow(this); for (int i = 0; i < colums; i++)// 列数 {// 列名 params.setMargins(1, 1, 1, 1); TextView textView = new TextView(this); textView .setBackgroundColor(getResources().getColor(R.color.top)); textView.setTextColor(Color.WHITE); textView.setTextSize(31); textView.setLayoutParams(params); textView.setText(columsName);// 列名 textView.setTextSize(30); textView.setGravity(Gravity.CENTER_HORIZONTAL); titleRow.addView(textView);// 把控件添加到行TableRow中 } flag = false; tableLayout.addView(titleRow);// 把行添加到TableLayout中 } // 新建一行,显示每个成员的具体信息 TableRow personRow = new TableRow(this); for (int i = 0; i < lines; i++) { params.setMargins(1, 1, 1, 1); object; // 我在这里用Object代表表格显示的内容, // Object可以是字符串、数字,也可以是照片,看你具体的定义 if (object instanceof String) {// 字符串居中显示 TextView textView = new TextView(this); textView.setLayoutParams(params); textView.setTextSize(29); if (colorChange % 2 == 1) textView.setBackgroundColor(getResources().getColor( R.color.second)); else textView.setBackgroundColor(getResources().getColor( R.color.third)); textView.setText(object.toString()); textView.setTextSize(30); textView.setGravity(Gravity.CENTER); personRow.addView(textView); } else if (object instanceof Number) {// 数字居右显示 TextView textView = new TextView(this); textView.setPadding(0, 0, 5, 0);// 右内边距 textView.setLayoutParams(params); textView.setText(object.toString()); textView.setTextSize(30); textView.setTextSize(29); if (colorChange % 2 == 1) textView.setBackgroundColor(getResources().getColor( R.color.second)); else textView.setBackgroundColor(getResources().getColor( R.color.third)); textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.RIGHT); personRow.addView(textView); } else if (object instanceof byte[]) {// 显示头像 TableRow.LayoutParams params2 = new TableRow.LayoutParams(60, 75); ImageView imageView = new ImageView(this); if (colorChange % 2 == 1) imageView.setBackgroundColor(getResources().getColor( R.color.second)); else imageView.setBackgroundColor(getResources().getColor( R.color.third)); Bitmap bitmap = BitmapFactory.decodeByteArray((byte[]) object, 0, ((byte[]) object).length); imageView.setImageBitmap(bitmap); imageView.setLayoutParams(params2); personRow.addView(imageView); } else {// 空值 TextView textView = new TextView(this); textView.setLayoutParams(params); textView.setTextSize(30); if (colorChange % 2 == 1) textView.setBackgroundColor(getResources().getColor( R.color.second)); else textView.setBackgroundColor(getResources().getColor( R.color.third)); personRow.addView(textView); } } colorChange++; tableLayout.addView(personRow); } }还可以对整个布局、整行或某个空间添加监听事件,只需setId(int id),然后在设立监听器即可。
以上是"Android如何使用代码动态生成界面"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
内容
布局
表格
代码
动态
界面
生成
信息
字符
字符串
控件
数字
最好
标题
程序
篇文章
面的
监听
不同
方便快捷
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
excel表填充相同数据库
融合通信网络技术有限公司
学校网络安全与隐私保护宣传
中国网络根服务器终端在哪
无锡 服务器维修
应聘游戏软件开发
广州找软件开发工作一般住哪
计算机网络技术专业实训报告
国家网络安全技术协会网站
安徽黑桃互联网科技有限公司
学校 数据库 教育局
济南OA软件开发招聘网
nas 搭建web服务器
dhcp服务器设置开关还是自动
国家网络安全局信号的英语
建设网站如何选择空间服务器
珠海友信网络技术开发有限公司
在数据库中储存数据的对象
计算机网络安全管理规范
维护网络安全运行
低估软件开发时间的策略
有线宽带用哪种服务器
打印服务器驱动怎么删除不了
网络安全等级保护技术咨询服务
中国网络安全十大人物
杨浦区提供网络技术代理品牌
汽车数据安全网络安全自查
安卓信号无服务器
整车数据库
华为网络安全专家是谁