将控件对齐在屏幕中央

时间:2012-05-22 06:57:46

标签: android android-layout

我有控件,我想将它们放在屏幕中心,所以我使用了以下代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_vertical|center_horizontal"
    android:background="#DDDDDD">
    <TextView
        android:id="@+id/tv_un"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10pt"
        android:textColor="#444444"

        android:layout_marginRight="9dip"
        android:layout_marginTop="20dip"
        android:layout_marginLeft="10dip"

        android:text="User Name:"/>
    <EditText
        android:id="@+id/et_un"
        android:layout_width="150dip"
        android:layout_height="wrap_content"
        android:background="@android:drawable/editbox_background"
        android:layout_toRightOf="@id/tv_un"

        android:layout_alignTop="@id/tv_un"/>
     <TextView
        android:id="@+id/tv_pw"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10pt"
        android:textColor="#444444"

        android:layout_below="@id/tv_un"
        android:layout_marginRight="9dip"
        android:layout_marginTop="15dip"
        android:layout_marginLeft="10dip"

        android:text="Password:"/>
    <EditText
        android:id="@+id/et_pw"
        android:layout_width="150dip"
        android:layout_height="wrap_content"
        android:background="@android:drawable/editbox_background"
        android:layout_toRightOf="@id/tv_pw"
        android:layout_alignTop="@id/tv_pw"
        android:layout_below="@id/et_un"
        android:layout_marginLeft="17dip"

        android:password="true"        />
    <Button
        android:id="@+id/btn_login"
        android:layout_width="100dip"
        android:layout_height="wrap_content"
        android:layout_below="@id/et_pw"

        android:layout_marginTop="15dip"
        android:layout_marginLeft="110dip"

        android:text="Login" />
     <TextView
        android:id="@+id/tv_error"
        android:layout_width="fill_parent"
        android:layout_height="40dip"
        android:textSize="7pt"

        android:layout_below="@id/btn_login"
        android:layout_marginRight="9dip"
        android:layout_marginTop="15dip"
        android:layout_marginLeft="15dip"
        android:textColor="#AA0000"

        android:text=""/>
</RelativeLayout>

但输出如下图所示

enter image description here

无论屏幕的方向如何,都知道如何将它们居中

祝你好运

5 个答案:

答案 0 :(得分:7)

尝试android:layout_centerInParent = "true"这可以解决您的问题。您可以将此属性应用于要在屏幕中心显示的任何元素。

答案 1 :(得分:4)

编辑了你的代码

这里是

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerHorizontal="true"
android:background="#DDDDDD"
android:gravity="center_vertical|center_horizontal" >

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:orientation="vertical" >

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

        <TextView
            android:id="@+id/tv_un"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="User Name:"
            android:textColor="#444444"
            android:textSize="10pt" />

        <EditText
            android:id="@+id/et_un"
            android:layout_width="150dip"
            android:layout_height="wrap_content"
            android:layout_alignTop="@id/tv_un"
            android:layout_toRightOf="@id/tv_un"
            android:background="@android:drawable/editbox_background" />
    </LinearLayout>

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

        <TextView
            android:id="@+id/tv_pw"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/tv_un"
            android:text="Password:"
            android:textColor="#444444"
            android:textSize="10pt" />

        <EditText
            android:id="@+id/et_pw"
            android:layout_width="150dip"
            android:layout_height="wrap_content"
            android:layout_alignTop="@id/tv_pw"
            android:layout_below="@id/et_un"
            android:layout_marginLeft="17dip"
            android:layout_toRightOf="@id/tv_pw"
            android:background="@android:drawable/editbox_background"
            android:password="true" />
    </LinearLayout>

    <Button
        android:id="@+id/btn_login"
        android:layout_width="100dip"
        android:layout_height="wrap_content"
        android:layout_below="@id/et_pw"
        android:layout_marginLeft="110dip"
        android:layout_marginTop="15dip"
        android:text="Login" />

    <TextView
        android:id="@+id/tv_error"
        android:layout_width="fill_parent"
        android:layout_height="40dip"
        android:layout_below="@id/btn_login"
        android:layout_marginLeft="15dip"
        android:layout_marginRight="9dip"
        android:layout_marginTop="15dip"
        android:text=""
        android:textColor="#AA0000"
        android:textSize="7pt" />
</LinearLayout>

答案 2 :(得分:2)

设置RelativeLayout参数:android:layout_height="wrap_content"android:layout_width="wrap_content"

让所有的XML看起来都很好。

答案 3 :(得分:1)

在布局和布局中使用android:layout_centerHorizo​​ntal =“true”; layout-land文件夹xml文件。希望它有所帮助。

P.s如果您希望布局适合所有屏幕尺寸,请不要对xml文件中的任何内容进行硬编码

答案 4 :(得分:1)

此处您不需要RelativeLayout。您还可以使用以下两个LinearLayouts

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#DDDDDD"
    android:gravity="center" >
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:orientation="vertical" >
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >
        <!-- here your textViews -->
        </LinearLayout>
   </LinearLayout>
</LinearLayout>

重要的是嵌套android:layout_gravity="center"中的LinearLayout