<TextView
android:layout_width="match_parent"
android:layout_height="48dp"
android:paddingTop="48dp"
android:text="Test"
/>
我期望 TextView 的测量高度为 96dp,无论“Test”占用多少空间(高度方面)(期望它截断)。相反,我得到了完整的“Test”+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
设置为任何有效值(但它作为必需属性需要存在)。
我从未在XML中使用过height
属性,但是我在文档中找不到它们之间的区别,特别是当元素也具有为填充和/或边距设置的值时,每个属性如何计算。
是否有任何可用的资源来讨论它,或者有人可以在这里解释一下吗?
编辑(问题总结):
可能是我使用它的情况引起了问题,因此可以忽略我上面的示例(我在一个新项目中尝试并获得与属性组合不同的结果)。
但是我的原始问题仍然适用(有些重叠):
- 它们之间有什么区别?
- 应该何时使用其中之一?
- 一种的使用会影响另一种的使用吗?
- 一种的使用是否对其他可以控制视图测量维度的属性(如填充或边距)产生影响?
编辑2(附言):
如果它有助于理解我的初始情况与新项目的情况:
我有一个Activity,它将windowActionBarOverlay
设置为true,因此我的内容可以在(半透明)ActionBar下面流动。
我还使用Croutons,这些Croutons现在出现在ActionBar下面。Ben Weiss建议我将Crouton附加到不同的ViewGroup上,但是我不确定应该将其附加到哪个ViewGroup上。
相反,我提供了一个自定义视图(当需要时进行膨胀),作为Crouton(第一部分问题中的TextView),并具有等于ActionBar顶部填充的顶部填充,因此现在它以垂直方式正常显示在ActionBar下面(有关其他问题,请参见另一天)。