我在 fill_parent 中看到很有价值,我想自己实现它,所以我可以做的不仅仅是填充剩余的空间(例如:填充剩余空间的80%)等等。)
fill_parent
如何实际工作?就像它如何计算剩余空间一样,它在运行时如何工作等等。
我过去曾对fill_parent
做过类似的事情,根据当前的屏幕大小计算元素占用的空间,元素占用的屏幕数量等,但是我想知道Android如何使用fill_parent
。
答案 0 :(得分:6)
尝试创建自定义视图或ViewGroup,您会发现。
将视图带到您的屏幕有三个阶段:
在测量中,父母会告诉孩子有多少空间可用。它可以针对childs布局参数执行此操作。因此,如果孩子说match_parent
(fill_parent
已被弃用),则父母将传入其自己的大小或剩余空间(大部分时间......)
然后,孩子接受可用的尺寸,拨打setMeasuredDimenstion(allTheSpaceIGot)
并为您量身定做。
在布局期间,父母会检查孩子的测量尺寸。然后相应地设置儿童界限(上,左,下,右)。
最后在onDraw中,每个孩子都在自己的范围内绘制。
总结一下:
如果你想为视图分配60%,你应该看看创建一个自定义ViewGroup(因为那是实际决定子尺寸的人)
我还撰写了一篇关于custom views的博文,其中详细介绍了如何create a custom layout。
答案 1 :(得分:2)
Android的完整源代码是开源的,只需点击几下即可在Google上免费获取,因此您可以阅读并随意学习。
但只是一个公平的警告,这绝对不是你想要完成的小任务,因为你需要考虑大量的案例。
如果您希望布局采用可用高度/宽度的X%,请查看PercentageRelativeLayout
仅供参考:'fill_parent'已弃用,请改用'match_parent'。他们确实完全一样,只是一个不同的词。