Android 在程序中动态添加 View 布局或控件
有时我们需要在程序中动态添加布局或控件等,下面用程序来展示一下相应的方法:
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 布局或控件的更多相关文章
- 在DevExpress程序中使用条形码二维码控件,以及进行报表打印处理
在很多业务系统里面,越来越多涉及到条形码.二维码的应用了,不管在Web界面还是WInform界面都需要处理很多物料相关的操作,甚至很多企业为了减少录入错误操作,为每个设备进行条形码.二维码的标签,直接 ...
- 往Layout中动态添加View
需要注意几个方法:基本上所有的方法参数单位是px 1.设置View的宽高: LinearLayout.LayoutParams params = new LinearLayout().LayoutPa ...
- (转载)VC/MFC 工具栏上动态添加组合框等控件的方法
引言 工具条作为大多数标准的Windows应用程序的 一个重要组成部分,使其成为促进人机界面友好的一个重要工具.通过工具条极大方便了用户对程序的操作,但是在由Microsoft Visual C++开 ...
- VC/MFC 工具栏上动态添加组合框等控件的方法
引言 工具条作为大多数标准的Windows应用程序的一个重要组成部分,使其成为促进人机界面友好的一个重要工具.通过工具条极大方便了用户对程序的操作,但是在由Microsoft Visual C++开发 ...
- Android开源中国客户端学习 (自定义View)左右滑动控件ScrollLayout
左右滑动的控件我们使用的也是非常多了,但是基本上都是使用的viewpager 等 android基础的控件,那么我们有么有考虑过查看他的源码进行定制呢?当然,如果你自我感觉非常好的话可以自己定制一个, ...
- asp.net 动态添加多个用户控件
动态添加多个相同用户控件,并使每个用户控件获取不同的内容. 用户控件代码: 代码WebControls using System; using System.Collections.Generic; ...
- winform PictureBox图片上动态添加Label或其他控件
效果图: 代码: //分页或者多次加载时,需要删除之前产生的lable等控件 ; tabID < ; tabID++) { foreach (Control control in this.ta ...
- android 在布局中动态添加控件
第一步 final LayoutInflater inflater = LayoutInflater.from(this); 第二步:获取需要被添加控件的布局 final LinearLayout l ...
- Android 在布局容器中动态添加控件
这里,通过一个小demo,就可以掌握在布局容器中动态添加控件,以动态添加Button控件为例,添加其他控件同样道理. 1.addView 添加控件到布局容器 2.removeView 在布局容器中删掉 ...
随机推荐
- Hibernate入门学习(一)
一.Hibernate是什么 Hibernate主要用来实现Java对象和数据表之间的映射,除此之外还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间.Hibe ...
- [摘]Hibernate查询事务必要性
背景: 添加事务与否都不影响Hibernate的查询操作. 问题: 查询操作是否有必要添加事务? 答案1: Hibernate官方手册上建议任何操作(增删改查)都需要添加事务. 答案2: robbin ...
- objective-c 随便记记
1.tableview滚动到某一位置 [tableViewShow setContentOffset:CGPointMake(0, 0) animated:YES]; //解决tableView分割线 ...
- c# .net sha256 16进制 64位 签名
public static string GetSHA256hash(string input, string _input_charset) { byte[] clearBytes = Encodi ...
- bzoj2592: [Usaco2012 Feb]Symmetry
Description After taking a modern art class, Farmer John has become interested in finding geometric ...
- php Xdebug调试
php开发环境里,安装了xdebug模块后,var_dump()输出的结果将比较易于查看,但默认情况下,var_dump() 输出的结果将有所变化:过多的数组元素不再显示,字符串变量将只显示前N个字符 ...
- HashMap的实现
HashMap的工作原理是近年来常见的Java面试题.几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此 ...
- [jQuery]《锋利的jQuery》插件部分总结
/** * <锋利的jQuery>插件部分总结 * * jQuery插件推荐命名:jquery.name.js * * $.fn.extend用于封装对象方法的插件 * $.extend用 ...
- Spark on yarn配置项说明与优化整理
配置于spark-default.conf 1. #spark.yarn.applicationMaster.waitTries 5 用于applicationMaster等待Spark maste ...
- PLSQL_性能优化工具系列17_Best Practices: Proactive Data Collection for Performance Issues
占位符 https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=2082062510193540&id=1366133. ...