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.