<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
作为任何有效值(但它必须作为必需属性存在)。
我从来没有在XML中使用过height
属性,但我找不到文档中的差异,尤其是当它运行的元素也为padding和/或设置值时,每个属性的计算方式裕度。
有没有可用的资源可以讨论它,或者有人可以在这里解释一下吗?
可能是我使用它的情况,这导致了一个问题,所以我的上面的例子可以被忽略(我尝试了一个新项目并从属性组合得到了不同的结果)。
但我原来的问题仍然适用(有些重叠):
编辑2(旁边):
如果它与新项目相比有助于理解我的初始情况:
我有一项将windowActionBarOverlay
设为true的活动,因此我的内容会在(半透明的)ActionBar下流动。
我也使用Croutons,它现在出现在ActionBar下面。 Ben Weiss建议我将Crouton附加到另一个ViewGroup,但我不确定将哪个ViewGroup附加到它。
相反,我提供了一个自定义视图(在需要时膨胀)作为Crouton(来自问题第一部分的TextView),其顶部填充等于ActionBar的填充,所以现在它垂直显示在下面ActionBar正常(另一天有其他问题)。
答案 0 :(得分:21)
所有以»layout_«开头的属性都是ViewGroup的提示,View是其中的一部分。为此,每个android.view.ViewGroup
都有一组LayoutParams。小部件本身不使用它们。
android:height
参数是android.view.View
的初始大小。但如果视图是ViewGroup
的一部分,那么ViewGroup
将根据其布局规则调整对象的大小。
BTW:较新的API有一个新的android:minHeight
和android:maxHeight
属性来澄清程序员的意图。
请注意,如果您未设置android:height
,则视图将自行计算大小。大部分时间都做正确的事。
ViewGroup
是抽象的 - 这个问题的答案取决于您正在使用的实际子课程。
请注意,WRAP_CONTENT
告诉使用ViewGroup
来使用android:height
。这意味着这是您的示例中使用的正确参数。
是的 - 递归地。 TableLayout将读取和写入android:width
属性以找出最宽的对象,并将所有其他对象的大小调整为它。
android:padding
否,但android:layout_margin
是。请注意,边距是布局参数,并非每个布局管理器都支持边距。
有关详细信息,请参阅margin vs padding。
更容易将所有宽度和高度属性视为提示。最后说的对象大小具有使用的ViewGroup
的布局管理器。
答案 1 :(得分:0)
从这一点开始,我认为layout_height
是灵活的 - 一个首选的高度,但仍会随内容扩展/缩小 - height
是一个明确的值。
在您的情况下发生的事情是TextView围绕Test
文本,但仍然使用48dp paddingTop
属性。
答案 2 :(得分:0)
嗯,android_layout:height指定VIEW的基本高度,而android:height指定对象的高度(例如,xml中的按钮)。
祝你好运! :)答案 3 :(得分:0)
android:height使视图正好是这么多像素高而android:layout_height指定了视图的基本高度。