Beschränken Sie den Edittext auf eine einzelne Zeile


312

Mögliches Duplikat: android-singleline-true-not-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>

Ich möchte, dass das Obige EditTextnur eine einzige Zeile hat. Selbst wenn der Benutzer die Eingabetaste drückt, sollte der Cursor nicht in die zweite Zeile gelangen. Kann mir jemand dabei helfen?


60
Verwenden Sieandroid:singleLine=true
Praveenkumar

6
Ersetzen Sie android: lines = "1" durch android:singleLine=true.
Mohammed Azharuddin Shaikh

3
true muss in Anführungszeichen "true" stehen
deepwinter

8
Da singleLine veraltet ist, können Sie maxLines = 1 und inputType = text verwenden.
Sunlover3

4
Verwenden android:inputType="textVisiblePassword"wird das Problem lösen
Saad Mahmud

Antworten:


557

Verwenden Sie android:maxLines="1"undandroid:inputType="text"

Sie haben das Attribut android: maxLines vergessen . Und beziehen Sie sich auf android: inputType In Ihrem Beispiel wird das folgende Ergebnis angezeigt :

<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 in der aktuellen Eclipse-IDE wird kein Verfallshinweis angezeigt, und android: maxLines beschränkt die Eingabe nicht auf eine Zeile
mjn

10
benutze singleline = true
Dakshesh Khatri

2
@Praveen: Kannst du bitte die Referenz angeben, in der steht, dass der Android: singleLine veraltet ist? Ich kann es dort für API 23 nicht sehen. Ich sehe es nicht in der Dokumentation erwähnt und bekomme auch keine Warnung, wenn ich es mit 23.0.1SDK verwende
Shobhit Puri


3
Wenn Sie nur android verwenden: maxLines = "1" wird nicht funktionieren. Also müssen Sie sowohl android: inputType = "text" als auch maxlines -1 verwenden. Dann wird es perfekt funktionieren
Hanuman

193

Verwendung android:singleLine="true"ist veraltet.

Fügen Sie einfach Ihren Eingabetyp hinzu und setzen Sie maxline auf 1, und alles wird gut funktionieren

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

80
Wenn Sie inputType nicht angeben, funktioniert es nicht, wie ich herausgefunden habe.
Micro

10
Ihr Recht. inputType = "textMultiLine" gibt Ihnen auch dann mehrzeilig, wenn Sie die maximale Zeile auf 1 setzen.
ralphgabb

2
Beachten Sie, dass android:inputType="number"es bereits maximal 1 Zeile gibt.
Micer

Dies funktioniert nicht, wenn meine Textansicht sehr lang ist und ich sie mehrzeilig haben möchte, aber nicht mit Zeilenumbrüchen.
Htafoya

@htafoya Dieses Code-Snippet dient dazu, Text in einer Zeile zu bearbeiten. Sie können jedoch hier bei SO eine neue Frage stellen.
Ralphgabb

54

android:singleLineist jetzt veraltet. Aus der Dokumentation :

Diese Konstante wurde in API-Level 3 nicht mehr unterstützt.

Dieses Attribut ist veraltet. Verwenden Sie maxLinesstattdessen, um das Layout eines statischen Textes zu ändern, und verwenden textMultiLineSie stattdessen das Flag im inputType-Attribut für bearbeitbare Textansichten (wenn sowohl singleLine als auch inputType angegeben sind, überschreiben die inputType-Flags den Wert von singleLine).

Sie können also einfach android:inputType="textEmailSubject"einen anderen Wert festlegen , der dem Inhalt des Felds entspricht.


29
Wenn Sie ein einfaches Zeilentextfeld möchten, verwenden Sie android:inputType="text".
PhoneixS

Danke Herr. Bungle, textMultiLine hat bei mir funktioniert!
user1510006

18

Sie müssen diese Zeile in Ihrem EditText in XML hinzufügen:

android:maxLines="1"

3
Wie andere Antworten festgestellt haben - dies wurde zugunsten maxLinesund inputTypeKombination
abgelehnt

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

Fügen Sie den obigen Code hinzu, um eine einzelne Zeile im EditText-Tag in Ihrem Layout zu haben.

android:singleLine="true" is deprecated

Diese Konstante wurde als veraltet in API - Ebene 3 .

Dieses Attribut ist veraltet. Verwenden Sie stattdessen maxLines, um das Layout eines statischen Textes zu ändern, und verwenden Sie stattdessen das Flag textMultiLine im Attribut inputType für bearbeitbare Textansichten (wenn sowohl singleLine als auch inputType angegeben werden, überschreiben die inputType-Flags den Wert von singleLine).


13

Jetzt ist das android:singleLineAttribut veraltet. Bitte fügen Sie diese Attribute zu Ihrer hinzu, EditTextdamit eine EditTexteinzelne Zeile angezeigt wird.

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

11

Ich habe dies in der Vergangenheit mit getan android:singleLine="true"und dann einen Listener für die Eingabetaste hinzugefügt:

((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

Dies funktioniert für den EditText:

android:inputType="text"

Dann würde ich eine maximale Länge für den Eingabetext festlegen:

android:maxLines="1"

Das sind die 2, die jetzt benötigt werden.



5

Alle zeigen den XML-Weg, außer einer Person, die die setMaxLines-Methode von EditText aufruft. Als ich das tat, funktionierte es jedoch nicht. Eine Sache, die für mich funktioniert hat, war das Einstellen des Eingabetyps.

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

Dadurch können AZ, az, 0-9 und Sonderzeichen verwendet werden, die Eingabetaste kann jedoch nicht gedrückt werden. Wenn Sie die Eingabetaste drücken, wird zur nächsten GUI-Komponente gewechselt, sofern dies in Ihrer Anwendung zutreffend ist.

Möglicherweise möchten Sie auch die maximale Anzahl von Zeichen festlegen, die in diesen EditText eingefügt werden können. Andernfalls wird alles rechts davon vom Bildschirm verschoben oder einfach vom Bildschirm selbst entfernt. Sie können dies folgendermaßen tun:

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

Dadurch werden die maximalen Zeichen in diesem EditText auf 8 gesetzt. Hoffe das alles hilft dir.




2

Bitte versuchen Sie diesen Code

android:inputType="textPersonName"

1

Der @Aleks G OnKeyListener () funktioniert wirklich gut, aber ich habe ihn von MainActivity aus ausgeführt und musste ihn daher leicht ändern:

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;
    }
});

Ich hoffe, das hilft jedem, der versucht, dasselbe zu tun.


1

Um dies einzuschränken, müssen Sie nur die Option für eine einzelne Zeile auf "true" setzen.

android:singleLine="true"

3
singleLine ist veraltet!
Jamshaid Kamran

1

Auch ist es wichtig zu achten , wenn die Eigenschaft Android - Version: input ist textMultiLine . In diesem Fall werden die Eigenschaften android: singleLine, android: imeOptions, android: ellipsize und android maxLines ignoriert und Ihr EditText akzeptiert ohnehin MultiLines.



1

Wie android:singleLine="true"jetzt abgeschrieben so verwenden

android: maxLines = "1"

Verwenden Sie stattdessen maxLines, um das Layout eines statischen Textes zu ändern, und verwenden Sie stattdessen das Flag textMultiLine im Attribut inputType für bearbeitbare Textansichten (wenn sowohl singleLine als auch inputType angegeben werden, überschreiben die inputType-Flags den Wert von singleLine).


1

Verwenden Sie den folgenden Code anstelle Ihres Codes

<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

Fügen Sie in der XML-Datei diese Eigenschaften in Text bearbeiten hinzu

 android:maxLines="1"

0
android:imeOptions="actionDone"

arbeitete für mich.


0

Sie müssen diese Zeile in Ihren EditText einfügen

android:maxLines="1"

und noch etwas, vergessen android:inputTypeSie nicht einstellen (was auch immer Sie wollen, Text, Telefon .., aber Sie müssen es einstellen)


0

Bei XML-Datei. Einfach hinzufügen

android: maxLines = "1"

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.