Antworten:
Standardmäßig sind alle EditText
Widgets in Android mehrzeilig.
Hier ist ein Beispielcode:
<EditText
android:inputType="textMultiLine" <!-- Multiline input -->
android:lines="8" <!-- Total Lines prior display -->
android:minLines="6" <!-- Minimum lines -->
android:gravity="top|left" <!-- Cursor Position -->
android:maxLines="10" <!-- Maximum Lines -->
android:layout_height="wrap_content" <!-- Height determined by content -->
android:layout_width="match_parent" <!-- Fill entire width -->
android:scrollbars="vertical" <!-- Vertical Scroll Bar -->
/>
inputType
negiert mindestens die lines
und minLines
Attribute. Ich hatte inputType="phone"
und die Linien Attribute hatte keine Wirkung
IndexOutOfBoundsException
, sobald Sie etwas android:inputType="textMultiLine"
Möglicherweise finden Sie es besser zu verwenden:
<EditText
...
android:inputType="textMultiLine"
/>
Dies liegt daran, dass android:singleLine
veraltet ist.
singleLine
Teil ihrer Antwort entfernt haben (vor langer Zeit). In Bezug auf die Frage selbst ist dies der wichtigste Teil ihrer Antwort.
IndexOutOfBoundsException
, sobald Sie etwas eingeben. Multiline ist jetzt die Standardeinstellung.
Das funktioniert bei mir, eigentlich sind diese 2 Attribute wichtig: inputType und lines . Außerdem benötigen Sie möglicherweise eine Bildlaufleiste. Der folgende Code zeigt, wie Sie eine erstellen:
<EditText
android:id="@+id/addr_edittext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="top|left"
android:inputType="textEmailAddress|textMultiLine"
android:lines="20"
android:minLines="5"
android:scrollHorizontally="false"
android:scrollbars="vertical" />
So habe ich das folgende Code-Snippet angewendet und es funktioniert einwandfrei. Hoffe, das würde jemandem helfen.
<EditText
android:id="@+id/EditText02"
android:gravity="top|left"
android:inputType="textMultiLine"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:lines="5"
android:scrollHorizontally="false"
/>
Prost! ...Vielen Dank.
Versuchen Sie dies, fügen Sie diese Zeilen zu Ihrer Textansicht hinzu, ich werde meine hinzufügen. Stellen Sie sicher, dass Sie es verstehen
android:overScrollMode="always"
android:scrollbarStyle="insideInset"
android:scrollbars="vertical"
<EditText
android:inputType="textMultiLine"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText_newprom_description"
android:padding="10dp"
android:lines="5"
android:overScrollMode="always"
android:scrollbarStyle="insideInset"
android:minLines="5"
android:gravity="top|left"
android:scrollbars="vertical"
android:layout_marginBottom="20dp"/>
und auf Ihrer Java-Klasse machen Sie auf Klicklistener zu diesem Bearbeitungstext wie folgt, ich füge meine, chane Namen entsprechend Ihren hinzu.
EditText description;
description = (EditText)findViewById(R.id.editText_newprom_description);
description.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
view.getParent().requestDisallowInterceptTouchEvent(true);
switch (motionEvent.getAction() & MotionEvent.ACTION_MASK){
case MotionEvent.ACTION_UP:
view.getParent().requestDisallowInterceptTouchEvent(false);
break;
}
return false;
}
});
Das funktioniert gut für mich
EditText verfügt über die Eigenschaft singleLine . Sie können im XML oder durch Aufrufen von setSingleLine (false) festlegen. http://developer.android.com/reference/android/widget/TextView.html#setSingleLine%28%29
Alle diese sind nett, funktionieren aber nicht, wenn Sie Ihren Edittext in der Bildlaufansicht der oberen Ebene haben :) Das vielleicht häufigste Beispiel ist die Ansicht "Einstellungen", die so viele Elemente enthält, dass sie über den sichtbaren Bereich hinausgehen. In diesem Fall setzen Sie sie alle in die Bildlaufansicht, um die Einstellungen scrollbar zu machen. Falls Sie in Ihren Einstellungen mehrzeiligen, scrollbaren Bearbeitungstext benötigen, funktioniert der Bildlauf nicht.
<EditText
android:id="@id/editText" //id of editText
android:gravity="start" // Where to start Typing
android:inputType="textMultiLine" // multiline
android:imeOptions="actionDone" // Keyboard done button
android:minLines="5" // Min Line of editText
android:hint="@string/Enter Data" // Hint in editText
android:layout_width="match_parent" //width editText
android:layout_height="wrap_content" //height editText
/>
Verwenden Sie das XML-Attribut, um die Anzahl der Zeilen zu deaktivieren, die zuvor im Thema zugewiesen wurden: android:lines="@null"
Ich habe dies von http://www.pcsalt.com/android/edittext-with-single-line-line-wrapping-and-done-action-in-android/ gelernt , obwohl mir die Website selbst nicht gefällt. Wenn Sie mehrzeilig sein möchten, ABER die Eingabetaste als Post-Schaltfläche beibehalten möchten, setzen Sie das "horizontale Scrollen" der Listenansicht auf "false".
android:scrollHorizontally="false"
Wenn es in XML nicht funktioniert, funktioniert es programmgesteuert seltsam.
listView.setHorizontallyScrolling(false);
<EditText
android:hint="Address"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="textMultiLine|textNoSuggestions"
android:id="@+id/edittxtAddress"
android:layout_marginLeft="@dimen/textsize2"
android:textColor="@android:color/white"
android:scrollbars="vertical"
android:minLines="2"
android:textStyle="normal" />
und in Aktivität zum Entfernen von "\ n" drückt der Benutzer auf die nächste Zeile
String editStr= edittxtAddress.getText().toString().trim();
MyString= editStr.replaceAll("\n"," ");
Wenn jemand AppCompatEditText verwendet , müssen Sie inputType = "textMultiLine" setzen. Hier ist der Code, den Sie kopieren können
<androidx.appcompat.widget.AppCompatEditText
android:padding="@dimen/_8sdp"
android:id="@+id/etNote"
android:minLines="6"
android:singleLine="false"
android:lines="8"
android:scrollbars="vertical"
android:background="@drawable/rounded_border"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_25sdp"
android:layout_marginTop="32dp"
android:layout_marginEnd="@dimen/_25sdp"
android:autofillHints=""
android:gravity="start|top"
android:inputType="textMultiLine"
/>
für den Hintergrund
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="@dimen/_5sdp"/>
<stroke android:width="1dp" android:color="#C8C8C8"/>
</shape>
Eine andere nette Sache zu tun ist, android:minHeight
zusammen mit zu verwenden android:layout_height="wrap_content"
. Auf diese Weise können Sie die Größe der Bearbeitung festlegen, wenn sie leer ist, und wenn der Benutzer Inhalte eingibt, wird sie entsprechend der Eingabe durch den Benutzer, einschließlich mehrerer Zeilen, gedehnt.