addview使用和.LayoutParams()的使用(草稿版)

本文介绍了在Android中如何使用addView方法添加子视图,并详细解析了ViewGroup.LayoutParams的作用。强调了index参数对视图层级的影响,指出index为-1时子视图会位于线性布局底部,而index越大,子视图位置越靠前。
摘要由CSDN通过智能技术生成

一个View的index越大,说明它越在上面

P.s.index为-1则在线性布局位于底部(-1具体原因不清楚)

 

 

addView

added in API level 1

 

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

Adds a child view with the specified layout parameters.

 

Parameters
childView: the child view to add

 

indexint: the position at which to add the child or -1 to add last

 

paramsViewGroup.LayoutParams: the layout parameters to set on the child

3个参数介绍:

子布局,子布局位置(-1表示线性布局中置于底部,0表示置于顶部,如果多个view重叠,则index越大,该view则越处于上层),添加子布局的父布局参数(如果有原父布局,则原父布局参数失效)

 

 

配合LayoutInflater来动态加载布局
LayoutInflater layoutInflater=LayoutInflater.from(this); view1=layoutInflater.inflate(R.layout.activity_test01_item02,rl,false);
rl.addView(view1);
//这种方法加载不了view,会报错
LinearLayout rl_item =findViewById(R.id.ll_item01);
rl.addView(rl_item);


 

ViewGroup.LayoutParams

官方构造方法:

ViewGroup.LayoutParams(Context c, AttributeSet attrs)

Creates a new set of layout parameters.

ViewGroup.LayoutParams(int width, int height)

Creates a new set of layout parameters with the specified width and height.

ViewGroup.LayoutParams(ViewGroup.LayoutParams source)

Copy constructor.

 

P.s.  view.getLayoutParams()是获取父布局的LayoutParams参数,不是获取自己的LayoutParams参数

 

RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params1.leftMargin = 100;
则必须rl.addView(view1,params1);而且view1最外层layout参数失效

 

RelativeLayout.LayoutParams params1 = (RelativeLayout.LayoutParams) view1.getLayoutParams();
params1.leftMargin = 100;则直接修改父布局的layou参数并且立即生效无需addview(param1)来设置
(其实也可以直接在view布局xml中直接修改)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值