Risposte:
Per impostazione predefinita, tutti i EditText
widget in Android sono multi-linea.
Ecco un po 'di codice di esempio:
<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
nega almeno gli attributi lines
e minLines
. Ho avuto inputType="phone"
e gli attributi linee non ha avuto effetto
IndexOutOfBoundsException
non appena si digita qualcosa a causa diandroid:inputType="textMultiLine"
Potrebbe essere meglio usare:
<EditText
...
android:inputType="textMultiLine"
/>
Questo perché android:singleLine
è deprecato.
singleLine
parte deprecata della loro risposta (molto tempo fa). Per quanto riguarda la domanda stessa, questa è la parte più importante della loro risposta.
IndexOutOfBoundsException
non appena si digita qualcosa. Multiline ora è l'impostazione predefinita.
Questo funziona per me, in realtà questi 2 attributi sono importanti: inputType e righe . Inoltre, potresti aver bisogno di una barra di scorrimento, il codice seguente mostra come crearne uno:
<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" />
Questo è il modo in cui ho applicato lo snippet di codice di seguito e funziona perfettamente. Spero che questo possa aiutare qualcuno.
<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"
/>
Saluti! ...Grazie.
Prova questo, aggiungi queste righe alla vista di modifica del testo, aggiungerò la mia. assicurati di capirlo
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"/>
e sulla tua classe java fai clic su listener di questo testo di modifica come segue, aggiungerò il mio, cambierò i nomi secondo il tuo.
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;
}
});
questo funziona bene per me
EditText ha la proprietà singleLine . È possibile impostare in XML o chiamando setSingleLine (false); http://developer.android.com/reference/android/widget/TextView.html#setSingleLine%28%29
Tutti questi sono carini ma non funzioneranno nel caso in cui tu abbia il tuo edittext all'interno della vista di scorrimento di livello superiore :) Forse l'esempio più comune è la vista "Impostazioni" che ha così tanti elementi che vanno oltre l'area visibile. In questo caso li metti tutti nella vista di scorrimento per rendere scorrevoli le impostazioni. Nel caso in cui sia necessario un testo di modifica scorrevole su più righe nelle impostazioni, il suo scorrimento non funzionerà.
<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
/>
Per disabilitare il numero di righe precedentemente assegnate al tema utilizzare l'attributo xml: android:lines="@null"
L'ho imparato da http://www.pcsalt.com/android/edittext-with-single-line-line-wrapping-and-done-action-in-android/ , anche se non mi piace il sito Web. Se vuoi multilinea MA vuoi conservare il pulsante di invio come pulsante post, imposta "scrolling orizzontale" della visualizzazione elenco su false.
android:scrollHorizontally="false"
Se non funziona in XML, farlo a livello di programmazione funziona stranamente.
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" />
e in Attività per rimuovere "\ n" è l'utente premere nextline
String editStr= edittxtAddress.getText().toString().trim();
MyString= editStr.replaceAll("\n"," ");
se qualcuno utilizza AppCompatEditText, devi impostare inputType = "textMultiLine" qui è il codice che puoi copiare
<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"
/>
per lo sfondo
<?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>
Un'altra cosa carina da fare è usare android:minHeight
insieme a android:layout_height="wrap_content"
. In questo modo è possibile impostare la dimensione della modifica quando è vuota e quando l'utente immette elementi, si estende in base alla quantità immessa dall'utente, comprese più righe.