关闭

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

标签: 动态添加控件
24403人阅读 评论(2) 收藏 举报
分类:

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

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

4
0
查看评论

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

一、说明 添加视图文件的时候有两种方式:1、通过在xml文件定义layout;2、java代码编写二、前言说明1.构造xml文件2.LayoutInflater提到addview,首先要了解一下LayoutInflater类。这个类最主要的功能就是实现将xml表述的layout转化为View的功能...
  • Xd_Yu
  • Xd_Yu
  • 2016-05-19 17:30
  • 18197

Android中动态添加view,删除view,获取view的内容

最近在项目中碰到一个需求,在编辑一个红包详情页面的时候,需要动态的添加使用条件,并且可以删除,最后提交数据的时候需要获取到条件里面的数据。网上搜了一些答案没有比较满意的解决方法,所以写下此文。 效果图: 解决思路: 1.使用布局的addview方法,即可动态添加。 2.动态删除需要获取到当前条目...
  • hustlwz
  • hustlwz
  • 2016-09-28 20:56
  • 3201

Android使用addView动态添加组件

在项目开发中,我们经常需要进行动态添加组件,其中可添加的部分有两项:布局和组件  其中,添加的布局主要有RelativeLayout型(相对布局)的和LinearLayout(线性布局)            添加的组件主要有文本...
  • suwu150
  • suwu150
  • 2016-05-08 22:51
  • 11223

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

最近在做一项目,项目中用到了一个功能,要求是动态Item,而且是多个的情况下,不过仔细的分析了下,都大同小异,做起来也很简单,在这里我只抽取出来做了一demo,也只做了一个动态添加item,同时可以获取所有添加和编辑Item上的数据,先上图:我们先来分析一下这个demo: 两个TextView和E...
  • bob_Xing_Yang
  • bob_Xing_Yang
  • 2017-03-20 17:32
  • 3647

Android 利用addView 让Activity 动态加入多个View 物件

在Android 中, 你可以利用排版View的 addView 函数, 将动态产生的View 物件加入到排版View 中, 范例如下 : main.xml 部分内容 <LinearLayout android:id="@+id/viewObj" an...
  • frdde
  • frdde
  • 2012-02-23 23:43
  • 18827

动态添加未知个View,并动态设置点击事件

先看看效果有时候,你不知道需求里面有几个View,要根据后台传的个数来动态添加撸代码因为是可以横向滑动的,所有我用一个HorizontalScrollView包裹一个LinearLayout,在LinearLayout里面动态add需要的View布局文件<?xml version="...
  • dl10210950
  • dl10210950
  • 2017-04-13 10:02
  • 1449

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

前言:
  • harvic880925
  • harvic880925
  • 2014-04-25 12:17
  • 34071

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

一、说明 添加视图文件的时候有两种方式:1、通过在xml文件定义layout;2、java代码编写 二、前言说明 1.构造xml文件 2.LayoutInflater 提到addview,首先要了解一下LayoutInflater类。这个类最主要的功能就是实现将xml表述的layout...
  • a15838319826
  • a15838319826
  • 2017-04-26 17:00
  • 876

Android动态设置布局,为LinearLayout动态添加子控件

View view = getActivity().getLayoutInflater().inflate(R.layout.category_select_popupwindow_right, null); LinearLayout linearLayoutContainer=(L...
  • shihui512
  • shihui512
  • 2016-03-10 23:05
  • 3485

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

本文主要讲述如何动态给UI界面添加布局和控件,在编程的时候很多时候需要动态显示一些内容,在动态添加View的时候,主要使用addView方法。 1. addView方法简介 在Android 中,可以利用排版View的 addView 函数,将动态产生的Vie...
  • li1500742101
  • li1500742101
  • 2014-09-22 12:53
  • 19430
    个人资料
    • 访问:348265次
    • 积分:3666
    • 等级:
    • 排名:第10532名
    • 原创:83篇
    • 转载:116篇
    • 译文:0篇
    • 评论:61条
    博客专栏
    说明
    Android 交流学习群 QQ:458506426