编辑:其实这比我想象的更混乱.以下布局简化.实际上,我在3.0之前的设备上使用了兼容性层的片段.
我使用层次查看器来检查发生了什么,并发现一个android.support.v4.app.NoSaveStateFrameLayout被添加到我的布局中,并且该布局的layout_height设置为wrap_content.这似乎是导致我的问题,但我还没有想出如何解决它.
具体来说,为什么这不工作? layout_gravity不应该放在底部吗?
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> ... stuff here ... <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:orientation="horizontal"> ... more stuff here ... </LinearLayout> </LinearLayout>
将layout_height更改为fill_parent或设置layout_weight的BTW似乎也不起作用.我只是想更好地了解发生了什么,因为显然我错过了一些重要的事情.谢谢.
解决方法
在这样的情况下,Android的行为我们可以说奇怪.
如果您选择了您的父线性布局的方向水平,那么您可以通过设置其layoug_gravity = bottom来将其子组件设置在底部.假设您在该水平线性布局中添加了2个文本视图,而第二个textview的layout_gravity是底部,那么它将设置为底部,但它的工作原理就像在其他列的底部设置为第一个文本视图.注意:当它的父线性布局是水平的,但你看不到它的结果时,可以设置textview的layout_gravity =“left”或“right”.
相反,如果您选择了父线性布局的垂直方向,则可以使用layout_gravity将其子组件设置为左右.但是第二个textview将显示在你可以说下一行的左或右重力,你设置.注意,当它的线性布局是垂直的但你看不到它的结果时,可以设置textview的layout_gravity =“top”或“bottom”.
尝试制作样例xml设计,如上所述,以便您得到更好的主意.
奇怪但真实!尝试了解这个行为. 原文链接:https://www.f2er.com/android/310729.html