Android 在程序中动态添加 View 布局或控件

原创 2015年11月23日 18:07:43

有时我们需要在程序中动态添加布局或控件等,下面用程序来展示一下相应的方法:

1、addView

添加View到布局容器

2、removeView

在布局容器中删掉已有的View

3、LayoutParams 

设置View的大小位置

 

下面来看一个demo;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//setContentView(R.layout.activity_main);
		
		LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
		LinearLayout lineLayout = new LinearLayout(this);
		lineLayout.setOrientation(LinearLayout.VERTICAL);
		lineLayout.setLayoutParams(params);
		lineLayout.setGravity(Gravity.TOP );
		addView(lineLayout);
		setContentView(lineLayout);
		
	}
    
	private void addView(final LinearLayout lineLayout)
	{
		final TextView showText = new TextView(this);
		showText.setTextColor(Color.GREEN);
		showText.setTextSize(30);
		showText.setId(10001);//设置 id
		showText.setText("我是在程序中添加的第一个文本");
		showText.setBackgroundColor(Color.GRAY);
		// set 文本大小
		LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
				LayoutParams.WRAP_CONTENT);
		//set 四周距离
		params.setMargins(10, 10, 10, 10);
	 
		showText.setLayoutParams(params);
		
		//添加文本到主布局
		lineLayout.addView(showText );
 		
		//创建按钮
		Button btn = new Button(this);
		btn.setText("点击删除文本");
		btn.setBackgroundColor(Color.GRAY) ;
		LinearLayout.LayoutParams btn_params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
				LayoutParams.WRAP_CONTENT); 
		btn_params.setMargins(0, 60, 60, 0);
		btn_params.gravity = Gravity.CENTER_HORIZONTAL;
		btn.setLayoutParams(btn_params);
		// 动态添加按钮到主布局
		lineLayout.addView(btn);
		
		//点击按钮 动态删除文本
		btn.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				if(null != lineLayout.findViewById(10001))
				{
					lineLayout.removeView(showText);
				}
				else
				{
					Toast.makeText(MainActivity.this, "文本已被删除", Toast.LENGTH_SHORT).show();
				}
			}
		});
		
	    //动态创建一个相对布局
		RelativeLayout relaLayout = new RelativeLayout(this);
		relaLayout.setBackgroundColor(Color.BLUE);
	    RelativeLayout.LayoutParams lp11 = new RelativeLayout.LayoutParams(
	    		ViewGroup.LayoutParams.MATCH_PARENT, 120);
	    
	   
	    relaLayout.setLayoutParams(lp11);
	    //动态创建一个文本
		final TextView RelaText = new TextView(this);
		RelaText.setTextColor(Color.GREEN);
		RelaText.setTextSize(20);
		RelaText.setText("我是在程序中添加的第二个文本,在相对布局中");
		RelaText.setBackgroundColor(Color.GRAY);
		
		//设置文本的布局
	    RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(
	    		ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
	     
	    lp2.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
	    lp2.setMargins(10, 10, 10, 10);
	    //将文本添加到相对布局中
		relaLayout.addView(RelaText,lp2);
		//将这个布局添加到主布局中
	    lineLayout.addView(relaLayout);
 
	}
}

看一下效果图片:

点击按钮前:

点击按钮删除上面的文本:



demo 源代码:

http://download.csdn.net/detail/q610098308/9293621

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android在布局中动态添加view的两种方法

一、说明 添加视图文件的时候有两种方式:1、通过在xml文件定义layout;2、java代码编写二、前言说明1.构造xml文件2.LayoutInflater提到addview,首先要了解一下La...
  • Xd_Yu
  • Xd_Yu
  • 2016年05月19日 17:30
  • 13367

Android中利用LinearLayout动态添加控件

在androidUI布局中,一般都是利用xml来布局控件,这是比较方便和直观的,但是有时却需要动态生成,下面就举2个简单例子来说明怎么动态添加控件: 1.动态添加2个垂直排列的Button @Over...
  • zcpangzi
  • zcpangzi
  • 2010年03月26日 20:19
  • 130485

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

前言:

Android 动态添加view或item并获取数据

最近在做一项目,项目中用到了一个功能,要求是动态Item,而且是多个的情况下,不过仔细的分析了下,都大同小异,做起来也很简单,在这里我只抽取出来做了一demo,也只做了一个动态添加item,同时可以获...

使用RelativeLayout动态添加View总结

有篇原文http://lovesong.blog.51cto.com/3976862/1183335 在很多时候xml里面的布局并不能满足我们的需求。这时候就需要用代码进行动态布局,...

Android 利用addView 动态给Activity添加View组件

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

Android在布局中动态添加view的两种方法

一、说明 添加视图文件的时候有两种方式:1、通过在xml文件定义layout;2、java代码编写 二、前言说明 1.构造xml文件 2.LayoutInflater 提到addview...

Android 利用addView 动态给Activity添加View组件

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

Android 通过Java代码生成创建界面。动态生成View,动态设置View属性。addRules详解

大家好,我是Miko,前一段时间一直在忙实习,很久没有更新博客了,这一段时间准备复习准备期末考试(预习课本),复习(预习)的差不多了=_=+////,因此抽出点时间,对前一段时间的工作以及学习进行一定...

动态添加重复布局以及各子布局点击事件

要求实现一个可以一次创建多个班级的功能,效果如下图: 其中班级名和专业是一个可以复用的子view,直接使用View addView = LayoutInflater.from(CreateClass...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 在程序中动态添加 View 布局或控件
举报原因:
原因补充:

(最多只允许输入30个字)