Android相对布局中alignParentRight与父布局Wrap_Content冲突

2016-12-12 14:06:45来源:网络收集作者:一线码农人点击

Android相对布局中alignParentRight与父布局Wrap_Content冲突

相对布局中alignParentRight/Left/Top/Bottom用的很多,毕竟线性布局做不到这一点。如果一个控件设置了alignParent,父布局设置宽度为wrap_content,实际显示效果却是父布局宽度为match_parent。这样的话就会挤掉其他布局,导致他们不可见。


这篇文章提到将alignParent属性去掉,但是若是一定要实现这个属性呢?


stackoverflow上有一个解决方案:使用weight
在子控件中设置了alignParent,那么将父布局宽度设为0,同时设置weight=1.(既然设置了weight,那么父布局的父布局应为线性布局)。这样的确可以使得父布局实际宽度为wrap_content。
不过这样的方法也有缺点:
1. 只能使用线性布局作为顶层布局
2. 如果父布局的父布局也需要设置为相对位置,那么无法实现


因为我的布局比较复杂,嵌套多,用这个方法仍然解决不了问题。后来我才意识到布局节点过多,用现有的布局本来就很难完美实现。因此将子布局抽离出来成为独立的布局文件,然后通过include引用或者代码中动态添加,大大简化了布局层级,也方便了布局的模块化编写。Android布局优化。

微信扫一扫

第七城市微信公众平台