web-dev-qa-db-de.com

edittext auf einzelne Zeile beschränken

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 die obige EditText nur eine Zeile hat. Selbst wenn der Benutzer die Eingabetaste drückt, sollte der Cursor nicht in die zweite Zeile gelangen. Kann mir jemand dabei helfen?

256
Pankaj Singhal

Verwenden Sie Android:maxLines="1" und Android:inputType="text"

Sie haben das Attribut Android: maxLines vergessen. Und beziehen Sie sich auf Android: inputType Bei 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>
468
Praveenkumar

Die Verwendung von 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"
175
ralphgabb

Android:singleLine ist jetzt veraltet. Aus der Dokumentation :

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

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

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

51
Mr. Bungle

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

Android:maxLines="1"
17
UGD
Android:maxLines="1"
Android:inputType="text"

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

Android:singleLine="true" is deprecated

Diese Konstante wurde veraltet in API-Ebene 3 .

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

14
ChrisR

Das Android:singleLine-Attribut ist jetzt veraltet. Bitte fügen Sie diese Attribute Ihrer EditText hinzu, damit eine EditText eine einzelne Zeile ist.

Android:inputType="text"
Android:imeOptions="actionNext"
Android:maxLines="1"
12
Kaushik

Ich habe dies in der Vergangenheit mit Android:singleLine="true" getan 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
Aleks G

Dies wird für den EditText funktionieren:

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.

11
Ray Hunter

Include Android:singleLine="true"

6
Vipul Shah

Alle zeigen den XML-Weg, außer dass eine Person den Aufruf der setMaxLines-Methode von EditText zeigte. Als ich das tat, funktionierte es jedoch nicht. Eine Sache, die für mich funktionierte, war das Einstellen der Eingabetyp.

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

Dies erlaubt A-Z, a-z, 0-9 und Sonderzeichen, erlaubt aber nicht, die Eingabetaste zu drücken. Wenn Sie die Eingabetaste drücken, wird die nächste GUI-Komponente aufgerufen, falls zutreffend in Ihrer Anwendung.

Möglicherweise möchten Sie auch die maximale Anzahl von Zeichen festlegen, die in diesen EditText eingefügt werden können. Andernfalls wird alles, was sich rechts davon befindet, vom Bildschirm geschoben oder einfach vom Bildschirm selbst abgerollt. Das kannst du so machen:

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

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

5
Peter Griffin

bitte versuche diesen Code

Android:inputType="textPersonName"
2
TheLastSummer

Programmatisch:

textView.setMaxLines(1);
2
Anton Duzenko

benutzen 

Android:ellipsize="end"
Android:maxLines="1"
2
Raghu Nagaraju

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

Android:singleLine="true"
1
user3469914

Es ist auch wichtig, darauf zu achten, wenn die Eigenschaft Android: inputType textMultiLine ist. Wenn ja, werden die Eigenschaften Android: singleLine, Android: imeOptions, Android: ellipsize und Android maxLines ignoriert und Ihr EditText akzeptiert trotzdem MultiLines.

1
Thales Valias

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

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 dasselbe versucht.

1
Mark Cramer

Verwenden Sie den folgenden Code anstelle Ihres Codes

<EditText 
    Android:id="@+id/searchbox"  
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:lines="1"
    Android:singleLine="true"
    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..."/>
1
Dipak Keshariya

Als Android:singleLine="true" wird nun abgewertet so verwendet

Android: maxLines = "1"

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

1
Maveňツ

Fügen Sie diese Zeile Ihrem Edittext hinzu

Android: inputType = "Text"

1
Sagar Devanga

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

 Android:maxLines="1"
0
yousef
Android:imeOptions="actionDone"

arbeitete für mich.

0
Bikram Pandit

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

Android:maxLines="1"

und noch etwas, vergiss nicht set Android:inputType (was auch immer du willst, Text, Telefon .., aber du musst es einstellen)

0
GianhTran