<TextView
android:layout_width="match_parent"
android:layout_height="48dp"
android:paddingTop="48dp"
android:text="Test"
/>
我希望 TextView 的测量高度为 96dp,无论“测试”占用了多少空间(高度方面)(希望它被切断)。
相反,我得到了填充的完整“测试”+ 48dp。
我可以输入任何有效值layout_height
并获得相同的结果。
要获得 96dp 的高度,我需要:
<TextView
android:layout_width="match_parent"
android:layout_height="<any valid value>"
android:height="48dp"
android:paddingTop="48dp"
android:text="Test"
/>
再次,我可以将layout_height
其作为任何有效值(但它需要作为必需属性存在)。
我从未height
在 XML 中使用过该属性,但我在文档中找不到差异,特别是当它所操作的元素也具有填充和/或边距设置的值时,如何计算每个属性。
是否有任何资源可以讨论它,或者有人可以在这里解释它吗?
编辑(问题摘要):
可能是我使用它的情况导致了问题,因此可以忽略上面的示例(我在一个新项目中尝试过,并且从属性组合中得到了不同的结果)。
但我原来的问题仍然适用(有些重叠):
- 他们之间有什么区别?
- 什么时候应该使用一个而不是另一个?
- 使用一种会影响另一种的使用吗?
- 使用 one 是否会影响其他可以控制视图测量尺寸的属性,例如填充或边距?
编辑2(旁白):
如果与新项目相比,它有助于了解我的初始情况:
我有一个设置windowActionBarOverlay
为 true 的活动,所以我的内容在(半透明)ActionBar 下流动。
我还使用了现在出现在 ActionBar 下的面包块。Ben Weiss 建议我将 Crouton 附加到不同的 ViewGroup,但我不确定将其附加到哪个 ViewGroup。
相反,我提供了一个自定义视图(在需要时会膨胀)作为 Crouton(问题第一部分中的 TextView),其顶部填充等于 ActionBar 的顶部填充,所以现在它在 ActionBar 下方垂直显示为正常(另一天有其他问题)。