步步为营学习android,步步惊喜之android基础篇-布局学习3之代码布局3
来源:互联网 发布:sam源码 编辑:程序博客网 时间:2024/05/16 01:07
布局学习3之代码布局3
接着上面代码学习:
看下面代码:
publicclass CodeLayoutActivityextends Activity {
/** Called whenthe activity is first created. */
View1view1;
@Override
publicvoid onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
LinearLayout l1 =new LinearLayout(this);
view1 =new View1(this);
// view1.measure(100, 100);
view1.setBackgroundColor(Color.GREEN);
l1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
l1.setOrientation(LinearLayout.VERTICAL);
//l1.setBackgroundColor(Color.RED);
Button b1 =new Button(this);
b1.setText("Ok");
LinearLayout.LayoutParamsll1 =new
LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
LinearLayout.LayoutParamsll2 =newLinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
ll1.topMargin= 200;
ll1.leftMargin = 200;
l1.addView(view1, ll2);
l1.addView(b1,ll1);
//l1.addView(view1,ll2);
setContentView(l1);
//addContentView(view1,ll2);
//addContentView(b1,ll1);
}
}
运行结果:
我们发现没有看到Button按钮画面。是什么原因导致的?
其实在开始我们设置linearlayout的时候设置排列方式是垂直排列,因为view1大小是屏幕大小所以button只能在view1的下面。如果想看到button有下面几种方法实现:
第一种方法:调换添加顺序。先添加b1,然后添加view1。
l1.addView(b1,ll1);
l1.addView(view1, ll2);
setContentView(l1);
运行结果是:不过这里需要注意的是设置button的大小不能长度与宽度都是fillparent,不然看不到view1,特别是长应该是wrap content。
第二种方法设置view1的大小,不然view1全屏。即使没有调换顺序,也可以看到button。
比如我设置ll2长宽位:
LinearLayout.LayoutParamsll2 = new LinearLayout.LayoutParams(100,100);
运行结果如下:
第三种方法:用addContentView方法,也是最好的方法.
l1.addView(b1,ll1);
// l1.addView(view1, ll2);
setContentView(l1);
addContentView(view1, ll1);
这里我们通过addContentView来添加。
注意一点先setContentView,然后addContentView。如果反过来结果如何:看运行结果:
发现view1(圆形)看不到了,究竟是什么原因呢?在解答这个问题前我们如果把setContentView改成addContentView。看看运行结果:
我们发现圆形出现了。
让我们来回答刚才的问题,也就是引出我们今天的一个重要知识点:
setContentView 和addContentView的区别:
两者的区别主要包括两点:
1. 以添加UI组件是否被移除
setContentView() 会导致先前添加的被移除,即替换性的;刚才为什么看不到圆形(先addContentView 后setContentView的时候)。因为最后setContentView把View1移除了啊!
而addContentView() 不会移除先前添加的UI组件,即是累积性的。为什么两个addContenView就能看到圆形的原因
2. 是否控制布局参数
addContentView() 有两个参数, 可以控制布局参数;
默认使用MATCH_PARENT;不过setContentView()也有带两个参数的版本, 可以控制布局参数。
最后还需要说明的是addView只能在布局中添加view不是拿来显示内容,显示内容的只有addContentView和setContenView两个方法。
最后一个运行画面的源代码下载,大家可以把注释去掉自己好好体会一下:
http://download.csdn.net/detail/tianke0711/4674969
- 步步为营学习android,步步惊喜之android基础篇-布局学习3之代码布局3
- 步步为营学习android,步步惊喜之android基础篇-布局学习3之代码布局1
- 步步为营学习android,步步惊喜之android基础篇-布局学习3之代码布局2
- 步步为营学习android,步步惊喜之android基础篇-布局学习1
- 步步为营学习android,步步惊喜之android基础篇-布局学习2
- 步步为营学习android,步步惊喜之android基础篇-android工程目录文件学习1
- 步步为营学习android,步步惊喜之android基础篇-按钮学习
- 步步为营学习android,步步惊喜(菜鸟级别的我跟你一起成长)-序言
- android基础学习之布局
- Android基础学习之常用布局学习
- 学习android之布局
- Android学习之布局
- android基础学习之六大Layout布局
- 学习Android从0开始之基础篇(3)-视图组件之布局管理器
- android布局之GridView布局学习小结
- Android学习-五布局之线性布局
- Android学习-五布局之相对布局
- android布局之基础布局
- [Android开发][001~002] android开发入门,环境配置
- 公网IP/内网IP:
- Application Session与Cookie
- VS2005/2008连接SQL登录失败
- SQL Server 2005数据库日志文件损坏的情况下如何恢复数据库
- 步步为营学习android,步步惊喜之android基础篇-布局学习3之代码布局3
- VS2008连接SQL 2005数据库文件
- 怎样防止数据重复提交
- Linux子进程对父进程资源“写时拷贝”
- [笔记][Java 4 Android][001~006] Java4android 环境配置、变量、基本数据类型
- 10-22数据库 复习
- CGContext坐标变换
- C++ 类的继承,子类以及之类的对象 对父类成员函数的访问权限
- 深入理解android消息处理机制