Android: alinhamento vertical para EditText de várias linhas (área de texto)


232

Eu quero ter 5 linhas para a altura da área de texto. Estou usando o seguinte 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" />

A área de texto parece boa, mas o problema é que o cursor está piscando no meio do campo de texto. Quero que ele pisque na primeira linha, no primeiro caractere do campo de texto.


15
tente retirar o seu gravidade "centro", poderia ser o problema
Sephy

Respostas:



99

Isso é semelhante a resposta CommonsWare mas com um menor ajuste: android:gravity="top|start". Exemplo 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
Não use, a top|leftmenos que saiba que pode controlar todos os idiomas do seu aplicativo, existem muitos idiomas da direita para a esquerda ( pt.wikipedia.org/wiki/Right-to-left ) Mantenha a localização adequada
MariusBudin

1
@MariusBudin Presumivelmente, top|startseria a alternativa correta?
ban-geoengineering

19

Você pode usar este Edittext .... Isso irá ajudá-lo.

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

vai funcionar


3

Agora, um dia de uso da gravidade starté a melhor escolha:

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

Você pode esclarecer por que isso funciona? Eu esperava startter trabalhado como left(para as línguas ocidentais) - isto é, afeta apenas a gravidade horizontal, mas também parece funcionar toptambém.
ban-geoengineering

Sim você está certo. Nós o usamos principalmente para suporte a RTL. Como no idioma árabe, vá para a direita, em vez de para a esquerda. E também é o topque você já pediu. Geralmente, começamos a escrever do lado superior esquerdo, por isso STARTtambém mostram as mesmas características. @ ban-
geoengineering

2

Eu acho que você pode usar layout:weight = 5em vez android:lines = 5porque quando você porta de seu aplicativo para dispositivo menor - ele faz isso muito bem .. bem, ambos os atributos irá realizar o seu trabalho ..

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.