转载自http://www.cnblogs.com/shaweng/archive/2012/07/10/2585134.html

LayoutParams继承于Android.View.ViewGroup.LayoutParams.
       LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout占领的,如果将一个View添加到一个Layout中,最好告诉Layout用户期望的布局方式,也就是将一个认可的layoutParams传递进去。
       可以这样去形容LayoutParams,在象棋的棋盘上,每个棋子都占据一个位置,也就是每个棋子都有一个位置的信息,如这个棋子在4行4列,这里的“4行4列”就是棋子的LayoutParams。

       但LayoutParams类也只是简单的描述了宽高,宽和高都可以设置成三种值:
       1,一个确定的值;
       2,FILL_PARENT,即填满(和父容器一样大小);
       3,WRAP_CONTENT,即包裹住组件就好。

在JAVA中动态构建的布局,常常这样写:

setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

上面这一句话其实是子对父的,也就是说,父布局下的子控件要设置这句话。

因为布局很多,虽然都继承至ViewGroup但是各个布局还是有很大的不同。

很显然上面这句应该这样写才算准确:

setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT,TableRow.LayoutParams.FILL_PARENT));

这表示这个子控件的父布局是一个TableRow , 这样的LayoutParams 太多,所以应明确指明。

 

下面分别说下两个常用到布局:

1. FrameLayout下动态设置子控件居中,动态用JAVA代码要这样实现:

FrameLayout.LayoutParams lytp = new FrameLayout.LayoutParams(80,LayoutParams.WRAP_CONTENT);lytp .gravity = Gravity.CENTER;btn.setLayoutParams(lytp);

2. RelativeLayout下动态设置子控件居中:

RelativeLayout.LayoutParams lp=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE); lp.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE); btn1.setLayoutParams(lp);

更多相关文章

  1. 谷歌官方推荐的下拉刷新设计——Android(安卓)SwipeRefreshLayou
  2. Android(安卓)5.0新控件常用属性收集
  3. 初学者之Android(安卓)HelloWorld项目
  4. Android中的FrameLayout帧布局
  5. Android(安卓)使用ExoPlayer视频播放 (二)
  6. Android(安卓)豆瓣电影- RecyclerView
  7. Android中怎么动态控制padding
  8. 关于Android(安卓)列表多布局的那些事
  9. 第一行代码(三)

随机推荐

  1. 【Android和iOS】快速切换到主线程更新UI
  2. 中国成Android手机最大市场 占全球份额1/
  3. 关于 android 的JNI的java 调用 C和 C 调
  4. 想抢先体验Android操作系统的魅力吗?那就
  5. 如何构建Android(安卓)1.5系统映像
  6. 开发者指南
  7. 转 Android的消息处理机制(图+源码分析)—
  8. Android自定义视图四:定制onMeasure强制显
  9. Android(安卓)4.0新增Space及GridLayout
  10. Android存在安全缺陷:可被黑客窃听和监视