Consenti la linea multipla nella vista Modifica testo in Android?


Risposte:


1176

Per impostazione predefinita, tutti i EditTextwidget 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 -->
/>

6
C'è un modo per avere inputType impostato su textMultiLine e imeOptions su actionSend? Vedo un tasto Invio sulla tastiera S4 anziché inviare quando imposto inputType su textMultiLine e imeOptions su actionSend.
user484691

1
Per "textMultiLine e imeOptions" vedere stackoverflow.com/questions/5014219/...
Tomka

2
Una cosa da notare, l'aggiunta di un inputTypenega almeno gli attributi linese minLines. Ho avuto inputType="phone"e gli attributi linee non ha avuto effetto
ono

2
Non usare questo. Provoca IndexOutOfBoundsExceptionnon appena si digita qualcosa a causa diandroid:inputType="textMultiLine"
Chisko,

se si utilizza AppCompactTextView è necessaria questa riga android: inputType = "textMultiLine"
sourav pandit

260

Potrebbe essere meglio usare:

<EditText 
...
android:inputType="textMultiLine"
/>

Questo perché android:singleLineè deprecato.


La risposta di Sharduls dovrebbe sicuramente funzionare su Apis moderne. Da quando hanno rimosso la singleLineparte deprecata della loro risposta (molto tempo fa). Per quanto riguarda la domanda stessa, questa è la parte più importante della loro risposta.
Cnosso,

Non usare questo. Provoca IndexOutOfBoundsExceptionnon appena si digita qualcosa. Multiline ora è l'impostazione predefinita.
Chisko,

@Chisko Un attributo XML non causerebbe IndexOutOfBoundsException. Non ricordo quando il tipo di input predefinito è cambiato (lo ha fatto anche?), Ma è probabilmente meglio tenerlo presente per motivi di compatibilità all'indietro.
Knossos

1
@Knossos bene, per quanto sia strano per te, lo è anche per me. Ho letteralmente copiato e incollato il codice e mi sono bloccato ogni volta con ogni possibile combinazione di diversi parametri fino a quando non l'ho rimosso. Vai a capire.
Chisko

42

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

20

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.


11

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


Grazie! È così che ho reso scorrevole un testo di modifica all'interno di una vista scorrevole.
Esdras Lopez,


5

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à.


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

4

Per disabilitare il numero di righe precedentemente assegnate al tema utilizzare l'attributo xml: android:lines="@null"


4
android:inputType="textMultiLine"

Questa riga di codice funziona per me. Aggiungi questo codice edittext nel tuo file XML.


3

Basta aggiungere questo android:inputType="textMultiLine" nel file XML sul campo pertinente.



1
<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"," ");

1

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>

0

Un'altra cosa carina da fare è usare android:minHeightinsieme 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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.