6

我试图在线性布局中垂直和水平居中编辑文本,但它不起作用。真的很简单的问题。

 <?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:background="@drawable/login">



<EditText
    android:layout_width="150dp"
    android:layout_height="wrap_content"
    android:background="@drawable/loginbutton"
    android:text="Username"
    android:layout_gravity="center"
    android:textSize="25dp"
    android:gravity="center_horizontal|center_vertical"
    android:textColor="#000000"
    android:layout_margin="10dp"
    android:id="@+id/username">
  </EditText>

同时,我将尝试更改为相对布局。

4

4 回答 4

12

LinearLayout据我所知,不支持在堆叠项目的方向上居中。除非LinearLayout是至关重要的(在您的情况下不应该如此,因为您还需要居中),否则我建议您切换到RelativeLayout.
使用,您可以在上RelativeLayout设置属性以使其居中。android:layout_centerInParent="true"EditText

于 2012-01-24T15:53:08.947 回答
1

使用重力会影响所述 UI 项的内容的重力,这意味着(在这种情况下)EditText 内的文本将居中。为了使 UI 项本身居中,您需要定义 layout_gravity,因为这是 UI 项在其父项中保持的重力。OP发布的代码将做水平中心而不是垂直中心。

作为替代方案,您可以使用 RelativeLayout

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

<EditText
    android:id="@+id/username"
    android:layout_width="150dp"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:background="@drawable/loginbutton"
    android:layout_centerInParent="true"
    android:text="Username"
    android:textColor="#000000"
    android:textSize="25dp" >
</EditText>

</RelativeLayout>
于 2012-01-24T15:39:22.670 回答
1

这很简单。使用线性布局添加android:gravity="center" 。

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
>
于 2017-12-28T08:56:41.647 回答
-1

试试这个:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:orientation="vertical" 
 android:background="@drawable/login"
 android:layout_centerVertical="true"
 android:layout_centerInParent="true">
于 2012-01-24T15:40:08.817 回答