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: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>

但是输出变成了下图

在此处输入图像描述

无论屏幕的方向如何,任何想法如何使它们居中

最好的祝福

4

5 回答 5

7

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

于 2012-05-22T07:01:15.963 回答
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>

于 2012-05-22T07:32:20.490 回答
2

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

其余的所有 XML 似乎都很好。

于 2012-05-22T07:22:48.153 回答
1

在 layout 和 layout-land 文件夹 xml 文件中使用 android:layout_centerHorizo​​ntal="true"。希望能帮助到你。

Ps 如果您希望布局适合所有屏幕尺寸,请不要在 xml 文件中硬编码任何内容

于 2012-05-22T06:59:44.500 回答
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.

于 2017-09-13T08:37:47.117 回答