在屏幕上完美地居中按钮

时间:2011-12-19 02:29:24

标签: android android-layout

我一直在网上寻找,大多数人都有一个解决扩展问题但我找不到这个选项的答案。这是xml。

<?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:layout_gravity="center">

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" android:layout_gravity="center" android:layout_weight="1"/>

</LinearLayout>

如何使按钮居中而不进行任何拉伸(也就是说我希望它包含内容)。

由于

1 个答案:

答案 0 :(得分:2)

使用RelativeLayout而不是LinearLayout:

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        android:layout_centerInParent="true"/>
</RelativeLayout>

另一种方法是使用两个嵌套的LinearLayouts,一个水平,一个垂直。例如:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_gravity="center_horizontal"
        android:orientation="horizontal">

        <Button
            android:id="@+id/button1"
            android:text="Button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"/>

    </LinearLayout>
</LinearLayout>

这样做的原因是水平LinearLayout仅关注垂直layout_gravity值,而垂直LinearLayout仅关注水平layout_gravity值。