Android: alineación vertical para texto de edición multilínea (área de texto)

232

Quiero tener 5 líneas para la altura del área de texto. Estoy usando el siguiente código.

<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" />

El área de texto se ve bien, pero el problema es que el cursor está parpadeando en el medio del campo de texto. Quiero que parpadee en la primera línea, en el primer carácter del campo de texto.

d-man
fuente
15
tratar de eliminar su gravedad "centro", podría ser el problema
Sephy

Respuestas:

370

Utilizar android:gravity="top"

CommonsWare
fuente
99

Esto es similar a la respuesta CommonsWare pero con un pequeño ajuste: android:gravity="top|start". Ejemplo de código 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" 
/>
Nandagopal T
fuente
8
No lo use a top|leftmenos que sepa que puede controlar todos los idiomas en su aplicación, hay muchos idiomas de derecha a izquierda ( en.wikipedia.org/wiki/Right-to-left )
MariusBudin
1
@MariusBudin Presumiblemente, top|start¿sería la alternativa correcta?
prohibición de geoingeniería
19

U puede usar este Edittext ... Esto lo ayudará.

<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" />
Denny Sharma
fuente
9

Utilizar este:

android:gravity="top"

o

android:gravity="top|left"
Samir Mangroliya
fuente
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" />

funcionará

Asad Rao
fuente
3

Ahora un día de uso de la gravedad startes la mejor opción:

android:gravity="start"

Para EditText (área de texto):

<EditText
    android:id="@+id/EditText02"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:lines="5"
    android:gravity="start"
    android:inputType="textMultiLine"
/>
Hasib Akter
fuente
¿Puedes arrojar algo de luz sobre por qué esto funciona? Esperaba starthaber trabajado como left(para los idiomas occidentales), es decir, solo afecta la gravedad horizontal, pero también parece hacer el trabajo top.
prohibición de geoingeniería
Sí, tiene usted razón. Principalmente usamos esto para soporte RTL. Al igual que en el idioma árabe, va a la derecha, en lugar de a la izquierda. Y también es a lo topque ya has preguntado. En general, comenzamos a escribir desde el lado superior izquierdo, por eso esto STARTtambién muestra las mismas características. @ ban-geoengineering
Hasib Akter
2

Creo que se puede utilizar layout:weight = 5en su lugar android:lines = 5porque cuando portar su aplicación para dispositivo más pequeño - lo hace muy bien .. así, ambos atributos lograrán su trabajo ..

Sanjay Herle
fuente