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?

Pankaj Singhal
quelle
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>
Praveenkumar
quelle
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
5
Veraltet seit API-Level 3. Siehe: developer.android.com/reference/android/R.attr.html#singleLine
Luis
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"
ralphgabb
quelle
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.

Mr. Bungle
quelle
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"
UGD
quelle
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).

ChrisR
quelle
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"
Kaushik
quelle
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;
    }
});
Aleks G.
quelle
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.

Ray Hunter
quelle
6

Einschließen android:singleLine="true"

Vipul Shah
quelle
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.

Peter Griffin
quelle
2

Programmatisch:

textView.setMaxLines(1);
Anton Duzenko
quelle
2

verwenden

android:ellipsize="end"
android:maxLines="1"
Raghu Nagaraju
quelle
2

Bitte versuchen Sie diesen Code

android:inputType="textPersonName"
Felix Cruz
quelle
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.

Mark Cramer
quelle
1

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

android:singleLine="true"
user3469914
quelle
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.

Thales Valias
quelle
1

Fügen Sie diese Zeile Ihrem Edittext hinzu

android: inputType = "text"

Sagar Devanga
quelle
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).

Maveň ň
quelle
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..."/>
Dipak Keshariya
quelle
0

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

 android:maxLines="1"
yousef
quelle
0
android:imeOptions="actionDone"

arbeitete für mich.

Bikram
quelle
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)

GianhTran
quelle
0

Bei XML-Datei. Einfach hinzufügen

android: maxLines = "1"

Kerelos
quelle