Android中的fill_parent如何实际工作?

Tre*_*art 0 android android-layout

我认为fill_parent有很大的价值,我想自己实现它,所以我可以做的不仅仅是填充剩余的空间(例如:填充80%的剩余空间等)

fill_parent实际上如何在引擎盖下工作?如何计算剩余空间,它如何在运行时工作等.

我在过去做过类似的事情,fill_parent根据当前的屏幕大小,元素应该占用的屏幕大小等来计算元素应该占用的空间等等.但我想知道Android是如何做到的与fill_parent.

Dav*_*jak 6

尝试创建自定义View或ViewGroup,您会发现.

将视图带入屏幕有3个阶段:

  • 测量
  • 布局

在衡量中,父母告诉孩子有多少空间可用.它可以针对childs布局参数执行此操作.因此,如果孩子说match_parent(fill_parent已弃用),父母将传递其自己的大小或剩余空间(大部分时间......)

然后孩子接受可用的尺寸,电话setMeasuredDimenstion(allTheSpaceIGot)和那个为你量身定做的.

在布局过程中,父母会检查孩子的测量尺寸.然后相应地设置儿童界限(顶部,左侧,底部,右侧).

最后在onDraw中,每个孩子都在自己的范围内.


总结一下:

  • 儿童提供有关其愿望的父母信息.
  • 家长为孩子提供一些可用空间.
  • 孩子说"我会接受它".
  • 父母给孩子最后的限制
  • 儿童在限制范围内吸引自己

如果你想为视图分配60%,你应该看看创建一个自定义ViewGroup(因为那是谁实际决定了孩子的维度)

我还写了一篇关于自定义视图的博客文章,详细介绍了如何创建自定义布局.