文档章节

Android中动态添加控件

小时天空
 小时天空
发布于 2015/05/22 10:20
字数 390
阅读 43
收藏 0

/**
 * 动态添加view
 * 动态设置id是不能为0,否则会没效果,猜测应该是与系统的某个控件的id冲突
 * @author szm
 *
 */
public class DynamicAddViewActivity extends Activity implements OnClickListener {

 private static final int TOP = 23;
 private static final int BTN = 1;
 private static final int ET = 2;
 /**最外层容器*/
    private RelativeLayout lay_out;
    /**上面的水平容器*/
 private LinearLayout lay_top;
 /**文本编辑框*/
 private EditText et;
 /**底部的容器*/
 private LinearLayout lay_bottom;
 /**提交按钮*/
 private Button btn;
 
 private static int index;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  lay_out = new RelativeLayout(this);
        lay_out.setBackgroundColor(0x55635214);
        //这里是RelativeLayout.LayoutParams
        LayoutParams params_re=new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
        //为最外层容器设置属性
        lay_out.setLayoutParams(params_re);
       
        //实例化上面的容器
        lay_top = new LinearLayout(this);
        lay_top.setId(TOP);
        lay_top.setBackgroundColor(0x44ff0000);
        //这里是RelativeLayout.LayoutParams
        LayoutParams params_top=new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);
        //为params_top添加约束
        params_top.addRule(RelativeLayout.ALIGN_TOP);
        lay_top.setOrientation(LinearLayout.HORIZONTAL);
        lay_top.setLayoutParams(params_top);
       
        et = new EditText(this);
        et.setId(ET);
        LinearLayout.LayoutParams params_et=new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.WRAP_CONTENT,1);
        et.setLayoutParams(params_et);
        btn = new Button(this);
        btn.setId(BTN);
        LinearLayout.LayoutParams params_btn=new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
        btn.setLayoutParams(params_btn);
        btn.setText("提交");
        //将et和btn都添加到lay_top
        lay_top.addView(et, 0);
        lay_top.addView(btn, 1);
       
        //实例化下面的容器
        lay_bottom = new LinearLayout(this);
        lay_bottom.setOrientation(LinearLayout.VERTICAL);
        LayoutParams params_bottom=new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
        params_bottom.addRule(RelativeLayout.BELOW,TOP);
        lay_bottom.setLayoutParams(params_bottom);//方式1  --设置相对兄弟控件
       
        //将上面容器加到最外层容器
        lay_out.addView(lay_top, 0);
        //imageView加到最外层容器
        lay_out.addView(lay_bottom, 1);
//        lay_out.addView(lay_bottom, 1,params_bottom);////方式2  --设置相对兄弟控件
        //设置布局
        setContentView(lay_out);
        btn.setOnClickListener(this);
 }

 public void onClick(View v) {
  //保证文本框中有内容
  if(et.getText().toString().trim().length()!=0){
   try{
    int sum=Integer.valueOf(et.getText().toString().trim());
    for(int i=0;i<sum;i++,index++){
     TextView tv=new TextView(this);
     tv.setBackgroundColor(0xeeffffff);
     tv.setText(index+1+"");
     lay_bottom.addView(tv);
    }
   }catch (Exception e) {
   }
  }
 }
 
}

© 著作权归作者所有

小时天空
粉丝 0
博文 10
码字总数 4589
作品 0
顺义
程序员
私信 提问
Android中利用LinearLayout动态添加控件

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

红薯
2011/12/14
1K
0
Android中利用LinearLayout动态添加控件

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

无鸯
2011/09/14
6.3K
0
Android 利用addView 动态给Activity添加View组件

本文主要讲述如何动态给UI界面添加布局和控件,在编程的时候很多时候需要动态显示一些内容,在动态添加View的时候,主要使用addView方法。 1. addView方法简介 在Android 中,可以利用排版Vie...

小湘西
2015/09/25
0
0
Android 自定义组合控件小结

引言 接触Android UI开发的这段时间以来,对自定义组合控件有了一定的了解,为此小结一下,本文小结内容主要讨论的是如何使用Android SDK提供的布局和控件组成一个功能完整组合控件并将其封装...

程序袁_绪龙
2014/09/24
0
0
[Android]应用界面创建控件的两种方式

在Android上创建应用程序时,必然要创建界面,而界面是由各种各样的Android控件组成的。 那么在界面设计中,有两种方式添加控件。一种是静态的,一种是动态的。 1、 先说第一种静态创建。 需...

亭子happy
2012/09/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

老也有错?35岁程序员是一道坎,横亘在每个技术职场人的心中

随着互联网的高速发展变革,大龄恐惧症越来越多地在技术圈被人讨论。很多程序员在工作5-10年以后,都会开始思考5年、10年甚至更久以后的自己,会是怎样一种生活工作状态,以及是否会被时代抛...

我最喜欢三大框架
30分钟前
2
0
今日头条算法原理详解全集,值得收藏!

今天,算法分发已经是信息平台、搜索引擎、浏览器、社交软件等几乎所有软件的标配,但同时,算法也开始面临质疑、挑战和误解。今日头条的推荐算法,从 2012 年 9月第一版开发运行至今,已经经...

骚年锦时
42分钟前
4
0
零拷贝:用户态视角

在Linux系统越来越多的人听说过所谓的零拷贝技术,但是我经常遇到很多对这个名词没有完全理解的人。因此,我决定写一些文章,深挖这个问题,希望能揭开这个有用的特性。在这篇文章,我们从用...

凌渡
54分钟前
1
0
以太坊中文文档翻译-区块

本文原文链接 点击这里获取Etherscan API 中文文档(完整版) 完整内容排版更好,推荐读者前往阅读。 区块(Blocks) 区块相关的 API,接口的参数说明请参考Etherscan API 约定, 文档中不单独...

Tiny熊
今天
2
0
Linux 内核的一个问题

是virtio 驱动,但是没有启动 virtio-mmio virtio-mmio.0: Failed to enable 64-bit or 32-bit DMA. Trying to continue, but this might not work.....[ 1.047924] md: ... autorun......

MtrS
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部