2012-01-24 7 views
5

Sto cercando di centrare un EditText verticalmente e orizzontalmente in un layout lineare, ma non funziona. Problema molto semplice davvero.bisogno di aiuto per centrare un EditText in un layout lineare

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

Proverò a passare a un relativelayout nel frattempo.

risposta

10

LinearLayout non supportano il centraggio nella direzione impila gli elementi per quanto ne so. A meno che il LinearLayout è fondamentale (che nel tuo caso non dovrebbe essere, come anche è necessario il centraggio), vi consiglio di passare a un RelativeLayout.
Con un RelativeLayout, è possibile impostare l'attributo android:layout_centerInParent="true" sul EditText per ottenere centrato.

+0

grazie per le informazioni! – codesomethin

+0

ora come potrei centrare tutti e 3 sullo schermo? Perché ne centratore uno, e metto il 2 sotto, ma sembra sciocco. Ho bisogno che tutti e 3 siano centrati, quasi come se fossero in una vista e io centro quella vista nel genitore. Qualche idea? – codesomethin

+1

Centra solo uno di questi, quindi usa i tag sopra e sotto sugli altri due usando solo il centraggio orizzontale. – blindstuff

1

Usando la gravità influenza della gravità del contenuto di detto elemento di interfaccia utente, questo mezzo (in questo caso) che il testo all'interno del EditText sarebbe centrato. Per centrare l'elemento dell'interfaccia utente stesso è necessario definire layout_gravity poiché questa è la gravità di un elemento dell'interfaccia utente all'interno del genitore. Il codice pubblicato dall'OP farà il centro orizzontale ma non il centro verticale.

In alternativa è possibile utilizzare 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

Ho sia nel EditText ... – codesomethin

-1

Prova questo:

<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

che esattamente il lavoro del codice di poco. dovrei aggiungere quelle 2 righe nel edittext? – codesomethin

+0

Si potrebbe provare, ma si potrebbe anche provare ad aggiungere 'Android: layout_gravity = "center_horizontal | center_vertical"' – VicVu

+1

Android ': layout_centerVertical = "true" android: layout_centerInParent = "true"' viene utilizzato quando all'interno di un layout relativo , impostare quelli nel layout lineare non farebbe nulla. – blindstuff

1

E 'molto semplice. Aggiungi android: gravità = "centro" con il layout lineare.

<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" 
Problemi correlati