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.


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

Antworten:



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

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


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


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

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.