(原创)从addView讲到LayoutParams

  

Android开发中,有时候要动态添加布局,这时候我们都会采用一个叫做addView的方法,那么就先来讲一讲这个方法

addView是viewGroup中的的方法,故而是用来给布局添加子控件用的,他主要有这几个重载方法

 

ViewGroup.addView(View child);

 

ViewGroup.addView(View child,int index);

 

ViewGroup.addView(View child, int width,int height);

 

ViewGroup.addView(View child, LayoutParams params);

 

ViewGroup.addView(View child,int index, LayoutParams params);

 

 

下面分别介绍这些参数

 

View child  就是你要加到父布局内的子控件或者子布局

int index 代表添加的层级顺序,在LinearLayout里0代表最开始的位置,-1代表最后的位置。在RelativeLayout和FrameLayout里0代表最底层,-1代表最外层

int width,int height 设置添加控件的宽高,也可以用LayoutParams.WRAP_CONTENT和LayoutParams.MATCH_PARENT。这个等下会详细讲到

最后,我们注意到,参数里还有一个 LayoutParams params

接下来就详细讲下这个。

如果直接从字面上来看,LayoutParams 应该是 布局参数 的意思。

这里注意一点,LayoutParams 代表的是子控件相对于父控件的布局参数。

比如一个LinearLayout.addview一个TextView,这个时候TextView的LayoutParams 就应该是LinearLayout包下面的LayoutParams 。换成其他的则会报错。

也就是说,父布局下的子控件才需要LayoutParams 

通过设置这个LayoutParams 子控件才能更好的确定自己在父布局里的一些格式

那么addView的LayoutParams 参数也就清楚了。即是给即将添加进来的子控件设置布局的格式。

当然,除了在addView的参数里设置,子控件本身也可以设置

View提供了一个setLayoutParams 方法用来给子控件设置参数格式

再次提示:根据不同的父布局应该设置不同包下的LayoutParams 。常见的有LinearLayout包,RelativeLayout包下和FrameLayout包下

那么LayoutParams 都有哪些属性呢?

下面开始介绍

首先,他的构造函数里可以设置宽高,也可以直接用LayoutParams对象名的width和height属性来设置宽高

宽高可以是数字也可以是LayoutParams.WRAP_CONTENT和LayoutParams.MATCH_PARENT

 

第二

对象名.topMargin

对象名.leftMargin

对象名.rightMargin

对象名.bottomMargin

用来设置不同的Margin

 

第三

对象名.gravity

用来设置子布局相对于父布局的位置

注意

子布局自己设置内部位置用自身的setGravity方法即可

 

最后 RelativeLayout包下的LayoutParams还有这一个属性

addRule。它用来设置对其方式的,一共有两个参数

 

如果只写第一个参数,那么只可以设置对父布局的对其方式

第二个参数则是加上兄弟布局的id,便可以设置对兄弟布局的对齐方式

 

以上就是addView和LayoutParams的相关内容,希望对朋友们有所帮助

 

你可能感兴趣的:(Android开发,android)