Android: allineamento verticale per EditText su più righe (area di testo)


232

Voglio avere 5 righe per l'altezza dell'area di testo. Sto usando il seguente codice.

<EditText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:singleLine="false"
    android:lines="5"
    android:layout_marginLeft="10dip"
    android:layout_marginRight="10dip" />

L'area di testo sembra a posto, ma il problema è che il cursore lampeggia nel mezzo del campo di testo. Voglio che lampeggi alla prima riga, al primo carattere del campo di testo.


15
prova a rimuovere il tuo "centro" di gravità, potrebbe essere il problema
— Sephy

Risposte:



99

Questo è simile a CommonsWare risposta, ma con un minore Tweak: android:gravity="top|start". Esempio di codice completo:

<EditText
    android:id="@+id/EditText02"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:lines="5"
    android:gravity="top|start"
    android:inputType="textMultiLine"
    android:scrollHorizontally="false" 
/>

8
Non utilizzare a top|leftmeno che tu non sappia che puoi controllare tutte le lingue nella tua app, ci sono molte lingue da destra a sinistra là fuori ( en.wikipedia.org/wiki/Right-to-left ) Mantieni la localizzazione amichevole
— MariusBudin,

1
@MariusBudin Presumibilmente, top|startsarebbe l'alternativa corretta?
— divieto di geoingegneria,

19

Puoi usare questo Edittext .... Questo ti aiuterà.

<EditText
android:id="@+id/EditText02"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:lines="5"
android:gravity="top|left"
android:inputType="textMultiLine" />


6
<EditText android:id="@+id/EditText02" android:layout_width="120dp"
    android:layout_height="wrap_content" android:lines="5" android:layout_centerInParent="true"
    android:gravity="top|left" android:inputType="textMultiLine"
    android:scrollHorizontally="false" android:minWidth="10.0dip"
    android:maxWidth="180dip" />

Funzionerà


3

Ora un uso quotidiano della gravità startè la scelta migliore:

android:gravity="start"

Per EditText (textarea):

<EditText
    android:id="@+id/EditText02"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:lines="5"
    android:gravity="start"
    android:inputType="textMultiLine"
/>

Puoi far luce sul perché funziona? Mi sarei aspettato startdi aver funzionato come left(per le lingue occidentali) - vale a dire, influenzare solo la gravità orizzontale, ma sembra anche fare il lavoro di top.
— divieto di geoingegneria,

Si hai ragione. Lo usiamo principalmente per il supporto RTL. Come in lingua araba, va a destra, anziché a sinistra. Ed è anche quello topche hai già chiesto. In generale iniziamo a scrivere dal lato in alto a sinistra, ecco perché questo STARTmostra anche le stesse caratteristiche. @ ban-geoengineering
— Hasib Akter,

2

Penso che puoi usare layout:weight = 5invece android:lines = 5perché quando porti la tua app su un dispositivo più piccolo - lo fa bene .. beh, entrambi gli attributi completeranno il tuo lavoro ..

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.