负边距示例:
场景描述
通过给其中一个视图设置负边距,使其侵入另一个视图的边界框从而导致两个视图重叠。
想法
如果需要重叠布局,则使用负边距的方式似乎按预期工作。 但是,我不想因为无意中没有正确地处理事情而遇到更大的问题。 当您使用负边距时,无论是模拟器、物理设备还是其他任何什么东西都似乎会正常工作,一个视图侵入了另一个视图的边界框,具体取决于在布局中如何声明它将位于另一个视图的上方还是下方。
我还知道自API 21以来,我们可以设置translationZ
和elevation
属性,使视图显示在其他视图的上面或下面,但是我的关注点基本上来自于文档中针对layout_margin
属性的说明明确指出边距值应该是正数,让我引用一下:
摘录:
指定此视图左侧、顶部、右侧和底部的额外空间。 这个空间位于这个视图的范围之外。边距值应该是正数。 必须是一个尺寸值,即一个浮点数并附加一个单位,如“14.5sp”。 可用单位有:px(像素),dp(密度无关像素),sp(根据首选字体大小缩放的比例像素),in(英寸),mm(毫米)...
在我最初提出这个问题后的几年中,我并没有遇到负边距的任何问题,尽可能地避免使用它们,但是没有遇到任何问题,所以即使文档中规定了这一点,我也不太担心。