limitare l'edittext alla riga singola


312

possibile duplicato: android-singleline-true-non-working-for-edittext

<EditText 
    android:id="@+id/searchbox"  
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:lines="1"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:layout_weight="1"
    android:layout_marginTop="2dp"
    android:drawablePadding="10dp"
    android:background="@drawable/edittext"
    android:drawableLeft="@drawable/folder_full"
    android:drawableRight="@drawable/search"
    android:paddingLeft="15dp"
    android:hint="search...">
</EditText>

Voglio fare quanto sopra EditTextper avere solo una riga. Anche se l'utente preme "invio", il cursore non dovrebbe scendere alla seconda riga. Qualcuno può aiutarmi a farlo?


60
usoandroid:singleLine=true
Praveenkumar l'

6
sostituisci android: lines = "1" con android:singleLine=true.
Mohammed Azharuddin Shaikh,

3
true deve essere tra virgolette "true"
deepwinter il

8
Man mano che singleLine diventa obsoleto, è possibile utilizzare maxLines = 1 e inputType = text.
sunlover3

4
L'uso android:inputType="textVisiblePassword"risolverà il problema
Saad Mahmud

Risposte:


557

Usa android:maxLines="1"eandroid:inputType="text"

Hai dimenticato l' attributo android: maxLines . E fare riferimento per Android: inputType Con il tuo esempio, di seguito fornirai questo risultato:

<EditText 
    android:id="@+id/searchbox"  
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:maxLines="1"
    android:inputType="text"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:layout_weight="1"
    android:layout_marginTop="2dp"
    android:drawablePadding="10dp"
    android:background="@drawable/edittext"
    android:drawableLeft="@drawable/folder_full"
    android:drawableRight="@drawable/search"
    android:paddingLeft="15dp"
    android:hint="search...">
</EditText>

17
@ Lukasz'Severiaan'Grela nell'attuale IDE Eclipse, non viene mostrato alcun suggerimento di deprecazione e androide: maxLines non limita l'input a una riga
mjn

10
usa singleline = true
Dakshesh Khatri

2
@Praveen: puoi per favore dare il riferimento dove dice Android: singleLine è deprecato? Non riesco a vederlo lì per API 23. Non lo vedo menzionato nella documentazione e inoltre non ricevo alcun avviso quando lo uso con 23.0.1SDK
Shobhit Puri,


3
Se usi solo android: maxLines = "1" non funzionerà, quindi devi usare sia android: inputType = "testo" e maxline -1, quindi funzionerà perfettamente
Hanuman

194

L'uso android:singleLine="true"è deprecato.

Basta aggiungere il tipo di input e impostare maxline su 1 e tutto funzionerà bene

android:inputType="text"
android:maxLines="1"

80
Se non specifichi inputType non funzionerà è quello che ho scoperto.
Micro

10
destra. inputType = "textMultiLine" ti darà ancora multilinea anche se imposti la linea massima su 1.
ralphgabb

2
Si noti che per android:inputType="number"c'è già max 1 riga.
Micer,

Questo non funziona se la mia visualizzazione di testo è molto lunga e la desidero multilinea, ma non con caratteri di nuova riga.
htafoya,

@htafoya questo frammento di codice funziona per rendere il testo di modifica a riga singola. Tuttavia, puoi iniziare una nuova domanda qui su SO.
ralphgabb,

54

android:singleLineè ora obsoleto. Dalla documentazione :

Questa costante è stata deprecata nel livello API 3.

Questo attributo è obsoleto. Utilizzare maxLinesinvece per modificare il layout di un testo statico e utilizzare il textMultiLineflag nell'attributo inputType invece per le viste di testo modificabili (se vengono forniti sia singleLine che inputType, i flag inputType sovrascriveranno il valore di singleLine).

Quindi puoi semplicemente impostare android:inputType="textEmailSubject"o qualsiasi altro valore che corrisponda al contenuto del campo.


29
Se si desidera un campo di testo a linea semplice, utilizzare android:inputType="text".
PhoneixS,

Grazie Signore. Bungle, textMultiLine ha funzionato per me!
user1510006

18

Devi aggiungere questa riga nel tuo EditText in xml:

android:maxLines="1"

3
Come hanno notato altre risposte - questo è stato deprecato a favore maxLinese inputTypecombinazione
Janis Peisenieks,

16
android:maxLines="1"
android:inputType="text"

Aggiungi il codice sopra per avere una sola riga nel tag EditText nel tuo layout.

android:singleLine="true" is deprecated

Questa costante è stata deprecata nel livello API 3 .

Questo attributo è obsoleto. Utilizzare invece maxLines per modificare il layout di un testo statico e utilizzare il flag textMultiLine nell'attributo inputType invece per le visualizzazioni di testo modificabili (se vengono forniti sia singleLine che inputType, i flag inputType sovrascriveranno il valore di singleLine).


13

Ora l' android:singleLineattributo è obsoleto. Aggiungi questi attributi al tuo EditTextper EditTextessere una linea singola.

android:inputType="text"
android:imeOptions="actionNext"
android:maxLines="1"

11

L'ho fatto in passato con android:singleLine="true"e quindi aggiungendo un listener per il tasto "invio":

((EditText)this.findViewById(R.id.mytext)).setOnKeyListener(new OnKeyListener() {

    public boolean onKey(View v, int keyCode, KeyEvent event) {

        if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) {
            //if the enter key was pressed, then hide the keyboard and do whatever needs doing.
            InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(getApplicationWindowToken(), 0);

            //do what you need on your enter key press here

            return true;
        }

        return false;
    }
});

11

Questo funzionerà per EditText:

android:inputType="text"

Quindi impostarei una lunghezza massima per il testo di input:

android:maxLines="1"

Quelli sono i 2 che sono necessari ora.



5

Tutti mostrano il modo XML, tranne una persona che ha chiamato il metodo setMaxLines di EditText. Tuttavia, quando l'ho fatto, non ha funzionato. Una cosa che ha funzionato per me è stata l'impostazione del tipo di input.

EditText editText = new EditText(this);
editText.setInputType(InputType.TYPE_CLASS_TEXT);

Ciò consente AZ, az, 0-9 e caratteri speciali, ma non consente di premere Invio. Quando premi Invio, passerà al componente GUI successivo, se applicabile nella tua applicazione.

Potresti anche voler impostare il numero massimo di caratteri che possono essere inseriti in quel EditText, altrimenti spingerà qualsiasi cosa alla sua destra fuori dallo schermo, o semplicemente inizierà a trascinarsi fuori dallo schermo stesso. Puoi farlo in questo modo:

InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter.LengthFilter(8);
editText.setFilters(filters);

Questo imposta i caratteri massimi su 8 in quel EditText. Spero che tutto ciò ti aiuti.




2

per favore prova questo codice

android:inputType="textPersonName"

1

@Aleks G OnKeyListener () funziona davvero bene, ma l'ho eseguito da MainActivity e quindi ho dovuto modificarlo leggermente:

EditText searchBox = (EditText) findViewById(R.id.searchbox);
searchBox.setOnKeyListener(new OnKeyListener() {

    public boolean onKey(View v, int keyCode, KeyEvent event) {

        if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) {
            //if the enter key was pressed, then hide the keyboard and do whatever needs doing.
            InputMethodManager imm = (InputMethodManager) MainActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(searchBox.getApplicationWindowToken(), 0);

            //do what you need on your enter key press here

            return true;
        }

        return false;
    }
});

Spero che questo aiuti chiunque cerchi di fare lo stesso.



1

Inoltre è importante prestare attenzione se la proprietà android: inputType è textMultiLine . In tal caso, le proprietà android: singleLine, android: imeOptions, android: ellipsize e android maxLines verranno ignorate e il tuo EditText accetterà comunque le MultiLine.



1

Come android:singleLine="true"è ora deprezzato quindi utilizzare

Android: maxLines = "1"

Utilizzare invece maxLines per modificare il layout di un testo statico e utilizzare il flag textMultiLine nell'attributo inputType invece per le visualizzazioni di testo modificabili (se vengono forniti sia singleLine che inputType, i flag inputType sovrascriveranno il valore di singleLine).


1

Usa sotto il codice invece del tuo codice

<EditText 
    android:id="@+id/searchbox"  
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:maxLines="1"
    android:inputType="text"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:layout_weight="1"
    android:layout_marginTop="2dp"
    android:drawablePadding="10dp"
    android:background="@drawable/edittext"
    android:drawableLeft="@drawable/folder_full"
    android:drawableRight="@drawable/search"
    android:paddingLeft="15dp"
    android:hint="search..."/>

0

nel file XML aggiungi queste proprietà in Modifica testo

 android:maxLines="1"

0
android:imeOptions="actionDone"

ha funzionato per me.


0

Devi aggiungere questa riga nel tuo EditText

android:maxLines="1"

e un'altra cosa, non dimenticare set android:inputType(qualunque cosa tu voglia, testo, telefono .., ma devi impostarlo)


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.