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

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. 在DevExpress程序中使用条形码二维码控件,以及进行报表打印处理

    在很多业务系统里面,越来越多涉及到条形码.二维码的应用了,不管在Web界面还是WInform界面都需要处理很多物料相关的操作,甚至很多企业为了减少录入错误操作,为每个设备进行条形码.二维码的标签,直接 ...

  2. 往Layout中动态添加View

    需要注意几个方法:基本上所有的方法参数单位是px 1.设置View的宽高: LinearLayout.LayoutParams params = new LinearLayout().LayoutPa ...

  3. (转载)VC/MFC 工具栏上动态添加组合框等控件的方法

    引言 工具条作为大多数标准的Windows应用程序的 一个重要组成部分,使其成为促进人机界面友好的一个重要工具.通过工具条极大方便了用户对程序的操作,但是在由Microsoft Visual C++开 ...

  4. VC/MFC 工具栏上动态添加组合框等控件的方法

    引言 工具条作为大多数标准的Windows应用程序的一个重要组成部分,使其成为促进人机界面友好的一个重要工具.通过工具条极大方便了用户对程序的操作,但是在由Microsoft Visual C++开发 ...

  5. Android开源中国客户端学习 (自定义View)左右滑动控件ScrollLayout

    左右滑动的控件我们使用的也是非常多了,但是基本上都是使用的viewpager 等 android基础的控件,那么我们有么有考虑过查看他的源码进行定制呢?当然,如果你自我感觉非常好的话可以自己定制一个, ...

  6. asp.net 动态添加多个用户控件

    动态添加多个相同用户控件,并使每个用户控件获取不同的内容. 用户控件代码: 代码WebControls using System; using System.Collections.Generic;  ...

  7. winform PictureBox图片上动态添加Label或其他控件

    效果图: 代码: //分页或者多次加载时,需要删除之前产生的lable等控件 ; tabID < ; tabID++) { foreach (Control control in this.ta ...

  8. android 在布局中动态添加控件

    第一步 final LayoutInflater inflater = LayoutInflater.from(this); 第二步:获取需要被添加控件的布局 final LinearLayout l ...

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

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

随机推荐

  1. Java 读Properties

    import java.io.*; import java.util.Properties; public class Study { public static void main(String[] ...

  2. android学习笔记20——ProgressDialog进度条对话框

    ProgressDialog==>进度条对话框 ProgressDialog本身就代表一个进度条对话框,程序只需要创建ProgressDialog实例,并将其显示出来就是一个进度条对话框:开发者 ...

  3. android学习笔记十——TabHost

    TabHost——标签页 ==> TabHost,可以在窗口放置多个标签页,每个标签页相当于获得了一个与外部容器相同大小的组件摆放区域. 通过此种方式可以实现在一个容器放置更多组件(EG:通话记 ...

  4. Mysql游标的简明写法

    -- cursor 游标/*declare 声明; declare 游标名 cursor for select_statement;open 找开; open 游标名fetch 取值; fetch 游 ...

  5. SSH登录很慢问题的解决

    用ssh连其他linux机器,会等待10-30秒才有提示输入密码.严重影响工作效率.登录很慢,登录上去后速度正常,这种情况主要有两种可能的原因: 1. DNS反向解析的问题 OpenSSH在用户登录的 ...

  6. Ignoring HTTPS certificates

    Our Development setups won't have valid or trusted certificates. When do you want test our webserver ...

  7. HDU 2176 取(m堆)石子游戏(Nim)

    取(m堆)石子游戏 题意: Problem Description m堆石子,两人轮流取.只能在1堆中取.取完者胜.先取者负输出No.先取者胜输出Yes,然后输出怎样取子.例如5堆 5,7,8,9,1 ...

  8. codeforces 557 D. Vitaly and Cycle 组合数学 + 判断二分图

    D. Vitaly and Cycle       time limit per test 1 second memory limit per test 256 megabytes input sta ...

  9. Studio右键选项中没有Git?

    从Git clone一个Project并打开后,都会习惯性的像使用Eclipse一样,选中工程右键,选择Git的对应版本控制选项. 如下图,你只看到了svn. 如何配置才能在右键选项中看到Git呢,我 ...

  10. c语言中的二分法

    \\\题外:对于printf引号中的内容一定要细心书写 ; 数组由a[0]开始计数,切记:尤其是与for循环中i=1 搞混 运用a[i+1]等超前数据时 需先用 for(i=0;i<=n-1;i ...