2013-07-10 24 views
14

Sto cercando di centrare un TextView in un LinearLayout e si sta centrando orizzontalmente ma non verticalmente.Android - Centro Textview in LinearLayout

sotto è il mio codice

<LinearLayout 
     android:orientation="vertical" 
     android:layout_width="320dp" 
     android:layout_height="50dp" 
     android:background="@drawable/rectblack" 
     android:layout_marginTop="10dp" 
     android:layout_gravity="center" 
     android:minWidth="25px" 
     android:minHeight="25px"> 
     <TextView 
      android:text="Explode a Vin" 
      android:gravity="center" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/tvExVin" /> 
    </LinearLayout> 

Alla fine vorrei che fosse centrato verticalmente alla sinistra del Linearlayout, se qualcuno riusciva a capire come fare, che sarebbe grande.

Grazie!

+0

rimuovere queste due righe da LinearLayout android: minWidth = "25px" android: MinHeight = "25px" –

risposta

38

Hai la gravità e layout_gravity invertito. Puoi avere più valori sull'attributo gravità separati da "|". Prova questo:

<LinearLayout 
     android:orientation="vertical" 
     android:layout_width="320dp" 
     android:layout_height="50dp" 
     android:background="@drawable/rectblack" 
     android:layout_marginTop="10dp" 
     android:layout_gravity="center_horizontal" 
     android:gravity="center_vertical|left" 
     android:minWidth="25px" 
     android:minHeight="25px"> 
     <TextView 
      android:text="Explode a Vin" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/tvExVin" /> 
    </LinearLayout> 

Per chiarimenti:

android:layout_gravity="center_horizontal" centrerà la LinearLayout orizzontalmente suo genitore.

android:gravity="center_vertical|left" centrerà TextView (e qualsiasi altro bambino) verticalmente all'interno del LinearLayout e lo allineerà a sinistra.

+1

e solo per il gusto di condividere la conoscenza, è possibile rimuovere 'android: gravità 'dal layout lineare e inserire' android: layout_gravity' nella vista testo, con lo stesso valore "center_vertical | left" e ottieni lo stesso risultato. – invertigo

+0

quindi mettere 'layout_gravity = center_vertical | left" 'nella vista testo e rimuoverlo dal layout lineare ha lo stesso effetto? – user222786

+0

@ user222786 esattamente – invertigo

2

tenta di modificare la gravity a

android:layout_gravity="center_vertical" 

gravity viene utilizzato per posizionare i contenuti all'interno del vostro View e layout_gravity viene utilizzato per posizionare la View all'interno del suo genitore.

Ma sono confuso da "Alla fine vorrei che fosse centrato verticalmente a sinistra del Linearlayout". Ma dal modo in cui suona, la mia risposta dovrebbe darti quello che vuoi.

Inoltre, a meno che non vi sia una buona ragione, non è necessario utilizzare un LinearLayout o un genitore per un singolo figlio. Se puoi dare una spiegazione migliore di ciò che vuoi o anche uno screenshot, potremmo essere in grado di aiutarti con una soluzione migliore.

Questo vi darà l'effetto desiderato

<LinearLayout 
    android:layout_width="320dp"  <!-- removed orientation (horizontal by default) --> 
    android:layout_height="50dp" 
    android:background="@drawable/rectblack" 
    android:layout_marginTop="10dp" 
    android:layout_gravity="center" 
    android:minWidth="25px" 
    android:minHeight="25px"> 
    <TextView 
     android:text="Explode a Vin" 
     android:layout_gravity="center_vertical"  <!-- changed gravity here --> 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"   <!-- change to wrap_content --> 
     android:id="@+id/tvExVin" /> 
</LinearLayout> 
+0

non ha funzionato ... – user222786

+1

Cambia la tua 'orienation' a "orizzontale"(o rimuovere lo farà la stessa cosa). Ho appena provato e centrato verticalmente e sul lato sinistro del 'LinearLayout' – codeMagic

+0

Quello che stavo chiedendo era che volevo mettere la vista del testo al centro verticalmente ea sinistra all'interno di Linearlayout – user222786

-1
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_gravity="center_horizontal|center_vertical" 
    android:gravity="center_vertical|center_horizontal" 
    android:orientation="vertical" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="AppLock Demo" 
     android:textSize="30dp" /> 

</LinearLayout> 
+0

si dovrebbe spiegare un po 'il motivo per cui questo funziona :) –

+0

-1 Persone del genere sono noti per dando risposte solo al codice, è molto fastidioso, ostentano il loro codice come se fosse un'arte proprio accanto a quella di Da Vinci. Credo che li faccia sembrare intelligenti in qualche modo (non pretendo di sembrare intelligente anche postando questo sproloquio). la qualità delle risposte in SO Android è così scarsa che sta diventando più inaffidabile a causa del fatto che queste persone danno risposte come questa. Spero che i moderatori possano risolvere questo problema. "SOLO CODICE SOLO RISPONDI PLEA SE" –

Problemi correlati