Android中利用LinearLayout动态添加控件

在androidUI布局中,一般都是利用xml来布局控件,这是比较方便和直观的,但是有时却需要动态生成,下面就举2个简单例子来说明怎么动态添加控件:

1.动态添加2个垂直排列的Button

[c-sharp] view plain copy
  1. @Override
  2. public void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. //setContentView(R.layout.main);
  5. final LinearLayout layout2=new LinearLayout(this);
  6. layout2.setOrientation(LinearLayout.VERTICAL);
  7. Button btn1=new Button(this);
  8. setContentView(layout2);
  9. Button btn2=new Button(this);
  10. btn1.setText("Button1");
  11. btn2.setText("Button2");
  12. layout2.addView(btn1);
  13. layout2.addView(btn2);
  14. setContentView(layout2);
  15. }

final LinearLayout layout2=new LinearLayou(this);

定义一个LinearLayout ,参数为context在这儿即为this

layout2.setOrientation(LinearLayout.VERTICAL);

设置layout格式为vertical,竖直排列

2.在Button的click事件中动态添加一个button

[java] view plain copy
  1. OnClickListener listen1;
  2. @Override
  3. public void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. //setContentView(R.layout.main);
  6. final LinearLayout layout2=new LinearLayout(this);
  7. layout2.setOrientation(LinearLayout.VERTICAL);
  8. Button btn1=new Button(this);
  9. setContentView(layout2);
  10. Button btn2=new Button(this);
  11. btn1.setText("Button1");
  12. btn2.setText("Button2");
  13. layout2.addView(btn1);
  14. layout2.addView(btn2);
  15. listen1 = new OnClickListener() {
  16. public void onClick(View v) {
  17. setTitle("点击button1 ");
  18. Button btn3=new Button(v.getContext());
  19. layout2.addView(btn3);
  20. btn3.setText("Button3");
  21. }
  22. };
  23. btn1.setOnClickListener(listen1);
  24. }

与上一例子区别就是,在Button的OnClickListener中动态添加控件,需要注意的一点是 Button btn3=new Button(v.getContext);参数v.getContext为当前view的context,为什么例子1中用this作为context呢,呵呵,这是因为this即当前的activity,而activity又是context的子类,所以this就可以直接作为activity了。

查了下,context派生的类有:

java.lang.Object
   ↳ android.content.Context
 Known Direct Subclasses

ContextWrapper , MockContext

Known Indirect Subclasses

AbstractInputMethodService , Activity , ActivityGroup , AliasActivity , Application , ContextThemeWrapper ,ExpandableListActivity , InputMethodService , IntentService , IsolatedContext , LauncherActivity , ListActivity ,MockApplication , MutableContextWrapper , PreferenceActivity , RenamingDelegatingContext , Service ,TabActivity

转载于:https://www.cnblogs.com/gzhnan/articles/5270175.html

Android中利用LinearLayout动态添加控件相关推荐

  1. Android 在布局容器中动态添加控件

    这里,通过一个小demo,就可以掌握在布局容器中动态添加控件,以动态添加Button控件为例,添加其他控件同样道理. 1.addView 添加控件到布局容器 2.removeView 在布局容器中删掉 ...

  2. 动态添加综合布局---动态添加控件及将某XML动态加入到Activity显示(续)

    前言:以前曾写过一篇关于动态生成控件的文章<动态添加控件及将某XML动态加入到Activity显示>,比较浅显,对于RelativeLayout的相关布局设置方法及相对布局与线性布局的混合 ...

  3. 动态添加控件及将某XML动态加入到Activity显示

    一.动态添加控件.设置参数 这个难度比较大,放在前面讲,用的也比较多,普通情况下,我们会提前把布局XML写好,然后对XML中的元素进行设置,但这种方法在有些情况下就显得不适合,比较聊天应用,比如帖子的 ...

  4. android 巧妙利用反射机制获取控件id,避免大量冗杂的findviewbyid和butterknife注解

    android 巧妙利用反射机制获取控件id,避免大量冗杂的findviewbyid和butterknife注解 一.反射机制概述 Java 反射机制是在运行状态中,对于任意一个类,都能够获得这个类的 ...

  5. asp.net动态添加控件学习

    看了老师的教程后,自己一点感悟记录下来: 1.在页面提交后,动态生成的控件会丢失, 但如果生成控件的代码在pageload中,就可以,原理是每次生成页面都执行生成. 2.动态按件或页面原来控件, 在页 ...

  6. jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法

    博客分类: jquery-easyui jQueryAjax框架HTML  现象: AJAX返回的html无法做到自动渲染为EasyUI的样式.比如:class="easyui-layout ...

  7. 关于页面动态添加控件(转)

    最近看到很多问题都是关于页面动态添加控件,页面postback以后,就取不到这些控件了.其实每次在页面上动态添加控件(或者在数据控件上动态添加列),它们的状态是不会被添加到页面的ViewState中去 ...

  8. delphi中利用Indy的TIdFtp控件实现FTP协议

    2019独角兽企业重金招聘Python工程师标准>>> delphi中利用Indy的TIdFtp控件实现FTP协议版权声明:本文为博主原创文章,未经博主允许不得转载.现在很多应用都需 ...

  9. 学习笔记:VB.net动态添加控件数组并传递事件

    学习笔记:VB.net动态添加控件数组并传递事件 控件数组和事件 "中间人" 动态添加控件 控件数组和事件 新建一个用户窗体,在定义控件数组时,不能用Withevnets来定义数组 ...

  10. Windows phone7 动态添加控件

    Windows phone7 动态添加控件 2011-03-29 3:48 using System; using System; using System.Collections.Generic; ...

最新文章

  1. 德国耶拿大学植物微生物组实验室急招博士生项目,申请截止19年3月20日
  2. UA OPTI501 电磁波 Lorentz Oscillator Model 1 Drude-Lorentz模型
  3. Android适配器以及作用,Android RecyclerView 通用适配器的实现
  4. Appium Python 六:管理应用和Activity
  5. linux 监控命令
  6. echarts如何获取后端的值_散户必读:当你中线看好一只股票后,该如何操作才能获取最大利润...
  7. 时钟周期及秒(s) 毫秒(ms) 微秒(μs) 纳秒(ns) 皮秒(ps)之间转换
  8. [深入JUnit] 测试运行的入口
  9. C# IOCP完成端口模型(简单实用高效)
  10. JPDA 架构研究14 - Agent利用环境指针访问VM(对象管理篇)
  11. linux安装mysql5.6rpm_centos6.5 下安装mysql5.6,rpm方式
  12. mysql concat函数进行模糊查询
  13. Java面试基础篇-Redis缓存
  14. 韦根(Wiegand协议)
  15. 2015游戏蛮牛——蛮牛杯第四届开发者大赛 创见VR未来开启报名
  16. 新加坡政府将与加美两国就网络安全问题展开合作
  17. 完美解决浏览器劫持方法,简单实用百试百灵!
  18. 用CSS美化你的HTML
  19. pythondjango教程_【秒懂】号称最为简明实用的Django上手教程
  20. oracle ppt讲义,oracle课件.ppt

热门文章

  1. Yii 2.0 权威指南 (4) 使用 Gii 生成代码
  2. 前端干货:教你轻松去除inline-block元素空隙
  3. C 标准库中输出到字符串、到文件的相关函数
  4. 19. 镜像二叉树(C++版本)
  5. mysql数据库备份oss_Linux(CentOS7)设置自动备份数据库到阿里云OSS(示例代码)
  6. python requests json_python:解析requests返回的response(json格式)
  7. FISCO BCOS(七)——— 配置 WeBase
  8. 大数据Hadoop学习记录(5)----Ubuntu16.4下安装配置HBase
  9. (day 52 - 约舍夫环问题 ) 剑指 Offer 62. 圆圈中最后剩下的数字
  10. mysql80连接不上本地服务器_干货教程:如何在服务器上安装Mysql8.0