我一直在研究android xml的.我习惯于android:layout_gravity="center"在特定位置对齐组件.
现在有一天,当我在像Activity这样的Dialog上工作时,我遇到了android:gravity="center".我在那里找到的,gravity用于使其child与特定位置对齐.
我会分享一个例子,
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="vertical" >
<EditText
android:id="@+id/enterNumberEdit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:hint="Enter No." >
<requestFocus />
</EditText>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
它使LinearLayout中心的孩子对齐.
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:orientation="vertical"
android:background="@drawable/dialog_background" >
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
它将LinearLayout自身对准中心.
现在我的问题是:
gravity适用于子组件并且layout_gravity是父组件.gravity结束layout_gravity.到目前为止,我已经找到了很多关于xml的解释.我想听听更好的解释.如果我错了,请告诉我
我想在LinearLayout的底部放置一个布局,但我似乎无法让它工作.我知道我可以使用RelativeLayout来做到这一点,但我应该可以使用LinearLayout,不应该吗?
编辑:实际上这比我想象的更令人困惑.下面的布局是简化的.实际上,我正在使用兼容层在3.0之前的设备上使用片段.
我使用Hierarchy Viewer来检查发生了什么,并发现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>
Run Code Online (Sandbox Code Playgroud)
顺便说一句,将layout_height更改为fill_parent或设置layout_weight似乎也不起作用.我只是想更好地了解发生了什么,因为很明显我错过了一些重要的东西.谢谢.