Android: Vertikale Ausrichtung für mehrzeiligen EditText (Textbereich)

232

Ich möchte 5 Zeilen für die Höhe des Textbereichs haben. Ich verwende den folgenden Code.

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

Der Textbereich sieht gut aus, aber das Problem ist, dass der Cursor in der Mitte des Textfelds blinkt. Ich möchte, dass es in der ersten Zeile beim ersten Zeichen des Textfelds blinkt.

D-Mann
quelle
15
versuchen Sie, Ihre Schwerkraft "Zentrum" zu entfernen, könnte das Problem sein
Sephy

Antworten:

370

Verwenden android:gravity="top"

CommonsWare
quelle
99

Dies ähnelt der Antwort von CommonsWare, jedoch mit einer geringfügigen Änderung : android:gravity="top|start". Vollständiges Codebeispiel:

<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.
quelle
8
Verwenden top|leftSie es nur, wenn Sie wissen, dass Sie alle Sprachen in Ihrer App steuern können. Es gibt viele Sprachen von rechts nach links ( en.wikipedia.org/wiki/Right-to-left ). Halten Sie es lokalisierungsfreundlich
Marius Budin
1
@MariusBudin Vermutlich top|startwäre das die richtige Alternative?
Ban-Geoengineering
19

Sie können diesen Edittext verwenden .... Dies wird Ihnen helfen.

<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
quelle
9

Benutze das:

android:gravity="top"

oder

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

es wird klappen

Asad Rao
quelle
3

Jetzt ist eine tägliche Nutzung der Schwerkraft startdie beste Wahl:

android:gravity="start"

Für EditText (Textbereich):

<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
quelle
Können Sie etwas Licht ins Dunkel bringen, warum dies funktioniert? Ich hätte erwartet start, dass ich so gearbeitet hätte left(für westliche Sprachen) - dh nur die horizontale Schwerkraft beeinflusst, aber es scheint auch die Aufgabe zu toperfüllen.
Ban-Geoengineering
Ja, du hast recht. Wir verwenden dies hauptsächlich zur Unterstützung von RTL. Wie in der arabischen Sprache geht es nach rechts statt nach links. Und es geht auch darum, topdass Sie bereits gefragt haben. Im Allgemeinen beginnen wir von oben links zu schreiben, deshalbSTART zeigen auch die gleichen Eigenschaften. @ Ban-Geoengineering
Hasib Akter
2

Ich denke, Sie können layout:weight = 5stattdessen verwenden, android:lines = 5denn wenn Sie Ihre App auf ein kleineres Gerät portieren, funktioniert dies gut. Nun, beide Attribute erfüllen Ihre Aufgabe.

Sanjay Herle
quelle