如何在android布局中居中带边距的按钮?

时间:2017-01-24 19:43:46

标签: android android-layout

在android布局中我想要有两行:

  1. 在第一行中,ONE按钮位于屏幕中间的顶部。 Ledt和它的一些空间。

  2. 下面有一排其他按钮,按一下距离的第一个按钮。

  3. 以下是我尝试使用的代码。对于我尝试LinearLayout以及android:layout_gravity="center_vertical"的第一个android:layout_gravity="center_horizontal",我在android:layout_marginBottom="10dp" 中添加了一行LinearLayout第一个Button。我使用this answer作为模板。

    但是,第一行和第二行的按钮之间没有垂直空间,第一行(顶部)的第一个按钮位于屏幕的 left 侧。我以为我确实在xml文件中放了正确的属性,但可能要复杂得多。一如既往......

    以下是完整xml的代码:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity" >
    
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginBottom="10dp"
            >
    
            <Button
                android:id="@+id/list_ok"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="10dp"
                android:text="@string/ok"
                android:onClick="buttonEndStat"
                >
            </Button>
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:id="@+id/header_list"
            android:layout_marginTop="36dp"
            >
    
    
            <Button
                android:id="@+id/listname"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="0.225"
                android:layout_below="@id/list_ok"
                android:text="@string/headerName">
            </Button>
            <Button
                android:id="@+id/listok"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="0.1"
                android:text="@string/headerOK">
            </Button>
            <Button
                android:id="@+id/listnok"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="0.1"
                android:text="@string/headerNOK">
            </Button>
            <Button
                android:id="@+id/listhist"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="0.2"
                android:text="@string/headerHist">
            </Button>
            <Button
                android:id="@+id/listprandom"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="0.15"
                android:text="@string/headerP">
            </Button>
            <Button
                android:id="@+id/listphist"
                android:layout_width="0px"
                android:layout_height="wrap_content"
                android:layout_weight="0.075"
                android:text="@string/headerH">
            </Button>
            <Button
                android:id="@+id/listptot"
                android:layout_width="0px"
                android:layout_height="wrap_content"
                android:layout_weight="0.075"
                android:text="@string/headerProb">
            </Button>
            <Button
                android:id="@+id/listproc"
                android:layout_width="0px"
                android:layout_height="wrap_content"
                android:layout_weight="0.075"
                android:text="%">
            </Button>
    
        </LinearLayout>
    
        <ListView
            android:id="@+id/listview1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:layout_below="@id/header_list"
            >
        </ListView>
    
    </RelativeLayout>
    

1 个答案:

答案 0 :(得分:2)

我会删除第一个LinearLayout,只是让按钮本身在屏幕上水平居中并有一些余量(我假设根元素是一个LinearLayout):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

        <Button
            android:id="@+id/list_ok"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="@string/ok"
            android:layout_gravity="center_horizontal"
            >
        </Button>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:id="@+id/header_list"
        android:layout_marginTop="36dp">

        <Button
            android:id="@+id/listname"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.225"
            android:layout_below="@id/list_ok"
            android:text="@string/headerName">
        </Button>
        <Button
            android:id="@+id/listok"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.1"
            android:text="@string/headerOK">
        </Button>
        <Button
            android:id="@+id/listnok"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.1"
            android:text="@string/headerNOK">
        </Button>
        <Button
            android:id="@+id/listhist"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.2"
            android:text="@string/headerHist">
        </Button>
        <Button
            android:id="@+id/listprandom"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.15"
            android:text="@string/headerP">
        </Button>
        <Button
            android:id="@+id/listphist"
            android:layout_width="0px"
            android:layout_height="wrap_content"
            android:layout_weight="0.075"
            android:text="@string/headerH">
        </Button>
        <Button
            android:id="@+id/listptot"
            android:layout_width="0px"
            android:layout_height="wrap_content"
            android:layout_weight="0.075"
            android:text="@string/headerProb">
        </Button>
        <Button
            android:id="@+id/listproc"
            android:layout_width="0px"
            android:layout_height="wrap_content"
            android:layout_weight="0.075"
            android:text="%">
        </Button>

    </LinearLayout>

    <ListView
        android:id="@+id/listview1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:layout_below="@id/header_list"
        >
    </ListView>

</LinearLayout>

如果您想让第一个LinearLayout从中删除属性layout_gravity,并将android:layout_gravity="center_horizontal"添加到按钮以使其水平居中。

修改

如果使用RelativeLayout作为根元素,则必须指定每个子项定位。您忘了将“header_list”放在首行下方:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <LinearLayout
        android:id="@+id/top_row"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:gravity="center_horizontal"
        >

        <Button
            android:id="@+id/list_ok"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:text="@string/ok"
            android:onClick="buttonEndStat"
            >
        </Button>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:id="@+id/header_list"
        android:layout_below="@id/top_row"
        >


        <Button
            android:id="@+id/listname"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.225"
            android:layout_below="@id/list_ok"
            android:text="@string/headerName">
        </Button>
        <Button
            android:id="@+id/listok"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.1"
            android:text="@string/headerOK">
        </Button>
        <Button
            android:id="@+id/listnok"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.1"
            android:text="@string/headerNOK">
        </Button>
        <Button
            android:id="@+id/listhist"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.2"
            android:text="@string/headerHist">
        </Button>
        <Button
            android:id="@+id/listprandom"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.15"
            android:text="@string/headerP">
        </Button>
        <Button
            android:id="@+id/listphist"
            android:layout_width="0px"
            android:layout_height="wrap_content"
            android:layout_weight="0.075"
            android:text="@string/headerH">
        </Button>
        <Button
            android:id="@+id/listptot"
            android:layout_width="0px"
            android:layout_height="wrap_content"
            android:layout_weight="0.075"
            android:text="@string/headerProb">
        </Button>
        <Button
            android:id="@+id/listproc"
            android:layout_width="0px"
            android:layout_height="wrap_content"
            android:layout_weight="0.075"
            android:text="%">
        </Button>

    </LinearLayout>

    <ListView
        android:id="@+id/listview1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:layout_below="@id/header_list"
        >
    </ListView>

</RelativeLayout>

要水平居中按钮,请将android:gravity="center_horizontal"添加到其父级。