为什么按钮在LinearLayout中没有垂直居中?

时间:2010-02-03 19:08:13

标签: android

我有一个LinearLayout,它只包含一个按钮。我希望此按钮垂直居中并与右侧对齐。我尝试了很多方法,但我无法使这个按钮垂直居中。它始终与顶部对齐。我也尝试在RelativeLayout中放一个按钮,按钮也不能垂直居中。

XML如下。这个布局有什么问题吗?感谢。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:background="#E8E3E4">
    <Button 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:text="More" 
        android:layout_gravity="right" />
</LinearLayout>

将android:layout_gravity =“right”更改为android:layout_gravity =“right | center_vertical”并未在我的问题中解决问题。

3 个答案:

答案 0 :(得分:19)

你用文字说你希望它垂直居中,但你没有在 XML 中说过你希望它垂直居中。您需要调整android:layout_gravity属性以同时指定rightcenter_vertical

但是,我建议你回到RelativeLayout。使用android:layout_centerVertical="true"android:layout_alignParentRight="true"使按钮垂直居中并对齐。

另外,请记住,您当前的LinearLayoutandroid:layout_height="wrap_content",这意味着内部没有任何内容。如果您希望居中具有任何意义,则需要容器具有比其内容更多的空间(例如,fill_parent)。

答案 1 :(得分:3)

此代码将按钮置于垂直中心和右侧屏幕

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:gravity="center_vertical">

    <Button 
        android:id="@+id/btnClick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:text="Click Me" />

</LinearLayout>

答案 2 :(得分:0)

尝试将android:gravity =“center”添加到LinearLayout。我记得在某个地方读过那可能有用的技巧。