ANDROID 学习笔记

本文探讨了在Android开发过程中,使用XML定义的布局在inflate到不同类型的父布局时,出现布局属性未生效的情况及其解决方案。指出需要通过父布局的LayoutParams重新设置子布局属性才能生效。

1、在xml视图文件中设置好布局后,在代码中inflate出来通过addView到其他布局中,当父级布局与子布局不一样时,发现在视图中设置的布局(如,margin、width等)都没有生效。

原因是:android的布局是根据父级组件来得LayoutParams定义的,如下代码

// 当执行如下代码,会发现child视图文件中定义的布局属性没有生效
// child:RelativeLayout
// parent:LinearLayout
View child = View.inflate(mCtx,	R.layout.child, null);parent.addView(child);
// 需要在代码中通过父级组件的LayoutParams设置child的布局属性,如下上面代码改成
View child = View.inflate(mCtx,	R.layout.child, null);
// 父级组件的LayoutParams
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(200, LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(20, 20, 20, 0);
child.setParams(params);
parent.addView(child);
// 这样才能设置子视图的layout布局

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值