按钮无法设置为中心

时间:2012-06-03 13:00:02

标签: android android-layout

我有登录屏幕,我想将按钮居中,所以我使用了android:layout_centerHorizontal="true"

布局xml是

<?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:background="@drawable/loginlayoutborders"
        android:orientation="vertical" >

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

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

            <EditText
                android:id="@+id/et_url"
                android:layout_width="400dip"
                android:layout_height="50dip"
                android:layout_toRightOf="@id/tv_url"
                android:background="@android:drawable/editbox_background" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            gra=""
            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="400dip"
                android:layout_height="50dip"
                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="400dip"
                android:layout_height="50dip"
                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_centerHorizontal="true"
            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>

</RelativeLayout>

并且样式文件是

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item>

    <shape>

        <gradient
            android:angle="90"
            android:startColor="#FFFFFF"
            android:endColor="#FFFFFF"
            android:type="linear" />

        <padding android:left="50dp" android:top="50dp" 
            android:right="50dp" android:bottom="50dp" /> 

        <corners android:radius="4dp" /> 

    </shape>

</item>

</selector>

但按钮始终位于屏幕的左侧,任何想法如何修复

2 个答案:

答案 0 :(得分:2)

android:layout_gravity添加到按钮

的中心位置
 <Button
            android:layout_gravity="center"
            android:id="@+id/btn_login"
            android:layout_width="100dip"
            android:layout_height="wrap_content"
            android:layout_below="@id/et_pw"
            android:layout_centerHorizontal="true"
            android:text="Login" />
 </LinearLayout>

答案 1 :(得分:1)

这是因为您的按钮位于LinearLayout内。无论如何,在RelativeLayout中有一个LinearLayout,因为唯一的孩子没有意义。

如果建议在没有LinearLayouts的情况下构建完整的布局。