打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
android 动态添加组件,layout的宽高的正确显示

http://blog.csdn.net/mr_orange_klj/article/details/44908679

当我们想在一个layout组件中用Java代码动态添加一个button时,我们可能直接用addView(view v)方法来添加组件。比如,我们想在一个linearlayout中添加一个button,而该button布局直接用xml来定义:

button.xml:

<Button

     Android:layout_width:100dp

     android:layout_height:100dp/>

这就是整个xml的内容,button的宽高都是100dp。当我们用layoutinflater.inflate(R.layout.button,null)将该布局实例化并添加到视图中后,显示的结果却不争取:button的宽高都不是100dp,而是仅仅是内容大小(wrap_content)。

这是因为我们在inflate方法中,第二个参数为null导致的。实际上,layout_width是相对于布局的高,只有在这个组件处于一个布局中时,该宽高才有效。而当inflate方法第二个参数为空时,layout_width和layout_height都失去了意义。因此,我们需要将原先的button定义在一个layout之中,该layout的layout_height和layout_width随便设置,因为同刚才所说的,该layout由于没有指定根组件,所以其宽高无效,但是其内部组件的宽高有效了。所以,如果我们要让外出的layout宽高继续有效,则还要在外面嵌套一个layout,同理,最外层的layout在inflate方法第二个参数为null时依然指定宽高无效。


换句话说,当调用infla方法时,如果第二个参数为null,则实例化的布局对象最外层组件的layout_width和layout_height因为没有外层布局,都被替换为默认的宽高参数,即wrap_content

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
约束布局ConstraintLayout用法全解析
Android 开发之旅:深入分析布局文件&又是“Hello World!”
setContentView和inflate区别
Android LayoutInflater原理分析,带你一步步深入了解View(一)
2.2.3 TableLayout(表格布局)
GridLayout(网格布局)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服