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.


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

Respuestas:



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

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


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á


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

¿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 ..

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.