2012-01-24 83 views
5

我試圖在線性佈局中垂直和水平居中放置一個edittext,但它不起作用。真的很簡單的問題。需要幫助將線條佈局中的EditText對齊

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

我會在同時嘗試更改爲相關佈局。

回答

10

LinearLayout不支持它堆積項目,據我知道方向爲中心。除非LinearLayout是至關重要的(在你的情況下它不應該,因爲你也需要居中),我建議你切換到RelativeLayout
使用RelativeLayout,您可以在EditText上設置屬性android:layout_centerInParent="true"以使其居中。

+0

感謝您的信息! – codesomethin

+0

現在我怎麼能在屏幕上居中顯示3個?因爲我將其中一個放在下面,但它看起來很傻。我需要全部3箇中心,就像他們在一個視圖中一樣,我將這個視圖集中在父視圖中。有任何想法嗎? – codesomethin

+1

只居中其中一個,然後在另外兩個標籤上僅使用水平居中使用上面和下面的標籤。 – blindstuff

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> 
+0

我在EditText上... – codesomethin

-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"> 
+0

,準確的代碼沒有工作兼得。我應該在edittext中添加這兩行嗎? – codesomethin

+0

你可以嘗試,但你也可以嘗試加入 「機器人:layout_gravity =‘CENTER_HORIZONTAL | center_vertical’」 – VicVu

+1

'機器人:layout_centerVertical =「真正的」機器人:layout_centerInParent =「真」' 使用相對佈局內時,將它們設置爲線性佈局將無能爲力。 – blindstuff

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" 
> 
1
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:background="@drawable/login" 
android:gravity="center"