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

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. LintCode "Continuous Subarray Sum"

    A variation to a classical DP: LCS. class Solution { public: /** * @param A an integer array * @retu ...

  2. centos 连不上网

    ifc-eth0 里面要加DNS1=192.168.1.1 一定是DNS1这样的,不要是DNS

  3. gcc/g++ 静态动态库 混链接.

    我的环境: centos6 x64. gcc4.4.7 在使用gcc/g++ 编译程序时我们希望指向一些库是使用静态的链接方式. 另外的一些是动态的方式. 我以boost 为例. 如果我们要使用静态库 ...

  4. android 开源项目一览

    直接拿来用!最火的Android开源项目(一) http://www.csdn.net/article/2013-05-03/2815127-Android-open-source-projects ...

  5. 安装ORACLE后,改变计算机名称,导致OracleDBConsoleOrcl服务无法启动

    错误信息: 启动oracledbconsoleorcl 服务提示 -- “--Windows不能再本地计算机启动oracledbconsoleorcl  有关更多信息,查阅系统事件日志,如果这是非Mi ...

  6. ultraedit15.00.0.1046注册码

      ultraedit注册码,版本:15.00.0.1043·········· 用户名 MAYBELOVE 注册码 LFKKM-KIMMX-OSFEB-PMISO-ELILS-IIIHO-KKHLR ...

  7. 黄聪:TinyMCE 4 增强 添加样式、按钮、字体、下拉菜单和弹出式窗口

    我最喜欢 WordPress 3.9 的更新是使用了 TinyMCE 4.0 编辑器.新的 TinyMCE 看起来看起来更整洁(真正匹配WP仪表板),它有一些非常不错的附加功能.我的很多老主题和插件必 ...

  8. 黄聪:C#中WebClient自动判断编码是UTF-8还是GBK,并且有超时判断功能

    public class WebDownload : WebClient { private int _timeout; /// <summary> /// 超时时间(毫秒) /// &l ...

  9. MapReduce编程实现学习

    MapReduce主要包括两个阶段:一个是Map,一个是Reduce. 每一步都有key-value对作为输入和输出. Map阶段的key-value对的格式是由输入的格式决定的,如果是默认的Text ...

  10. 工作中Linux常用命令

    rpm -qa|grep -i mysql rpm -ev mysql-server-5.1.73-5.el6_6.x86_64 如果报: error: Failed dependencies: li ...