Android addView()方法分为以下几个部分
addView()方法简述(一)
addView()方法实际使用和面试手册(二)
简介
大家都知道addView()一般用来动态添加View,LinearLayout、RelativeLayout添加子控件都可以用addView()。去看Android官方文档:ViewGroup里有addView的相关介绍。大概如下:
方法 | 解释 |
---|---|
addView (View child, ViewGroup.LayoutParams params) | Adds a child view with the specified layout parameters. |
- | 添加具有指定布局参数的子视图。默认往ViewGroup最后添加。 |
addView (View child, int index) | Adds a child view. If no layout parameters are already set on the child, the default parameters for this ViewGroup are set on the child. |
- | 添加子视图。如果没有在子视图上设置布局参数,则此ViewGroup的默认参数将在子视图上设置。看完这个就知道和上一个的区别了。添加到指定的位置。 |
addView (View child, int index,ViewGroup.LayoutParams params) | Adds a child view with the specified layout parameters. |
- | 添加具有指定布局参数的子视图。添加到指定的位置。 |
addView (View child) | Adds a child view. If no layout parameters are already set on the child, the default parameters for this ViewGroup are set on the child. |
- | 添加子视图。如果没有在子视图上设置布局参数,则此ViewGroup的默认参数将在子视图上设置。 |
addView (View child, int width, int height) | Adds a child view with this ViewGroup’s default layout parameters and the specified width and height. |
- | 使用此ViewGroup的默认布局参数和指定的宽度和高度添加子视图。 |
看完这个表格,其实对addView方法的不同参数已经有了大致的了解了。这里要说明的是ViewGroup才有addView方法,View是没有的。但是参数中的View可以是一个ViewGroup。
各个参数的具体说明
注意:不要从
View.draw(android.graphics.Canvas)、View.onDraw(android.graphics.Canvas)、dispatchDraw(android.graphics.Canvas)
或任何相关方法调用此方法。
1.addView (View child, ViewGroup.LayoutParams params)
这个方法是将第二个参数指定的布局给第一个参数传入的子视图中。
2.addView (View child, int index)
这个方法是将传入的子视图放在父布局的指定位置。
一个竖向的LinearLayout,如果你把index指定为-1则每次都会把子视图放在最后一个,也就是一个一个向下叠加,新加入的会放在最后;如果把Index指定为0,新加入的将会在头部把先加入的子视图挤下去,达到在顶部插入视图的效果。以此类推,别的数字和布局都差不多,大家多思考就能想出效果。
3.addView (View child, int index,ViewGroup.LayoutParams params)
这个就是前两个的一个结合,不多说了。
4.addView (View child)
需要注意的是,这个会吧父布局的布局信息添加给这个子视图。所以,如果你想这个子视图有自己的布局信息,就要先通过setLayoutParams设置好布局信息再addView。
5.addView (View child, int width, int height)
这个看上去就很容易,通过width和height来指定子视图的宽高。
总结
其实好多公司的APP都是没有Activity布局的,他们的布局其实就是一个空的LinearLayout指定id,然后通过findViewById找到这个根布局后添加头部等信息,这样就可以复用布局文件,写起来也容易。