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的相关内容,希望对朋友们有所帮助