364 Stimmen

Editiertext auf eine Zeile beschränken

Mögliches Duplikat : Android-einzelzeilig-wirklich-nicht-für-den-Text-arbeiten

<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 die oben genannten EditText nur eine Zeile zu haben. Selbst wenn der Benutzer die Eingabetaste drückt, sollte der Cursor nicht in die zweite Zeile gelangen. Kann mir jemand helfen, das zu tun?

13voto

Ray Hunter Punkte 14461

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 gebraucht werden.

13voto

Kaushik Punkte 6107

Jetzt android:singleLine Attribut ist veraltet. Bitte fügen Sie diese Attribute zu Ihrem EditText für eine EditText einzeilig zu sein.

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

11voto

Aleks G Punkte 54505

Ich habe dies in der Vergangenheit getan mit android:singleLine="true" und dann einen Listener für die "Enter"-Taste hinzufügen:

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

7voto

Peter Griffin Punkte 712

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

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

Dies erlaubt A-Z, a-z, 0-9 und Sonderzeichen, aber nicht die Eingabe von Enter. Wenn Sie die Eingabetaste drücken, wird zur nächsten GUI-Komponente gewechselt, sofern dies in Ihrer Anwendung möglich ist.

Möglicherweise möchten Sie auch die maximale Anzahl von Zeichen festlegen, die in den EditText eingegeben werden können, da er sonst die Zeichen rechts davon aus dem Bildschirm verdrängt oder einfach über den Bildschirm hinausgeht. Sie können dies wie folgt tun:

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

Dadurch wird die maximale Anzahl der Zeichen in diesem EditText auf 8 festgelegt. Ich hoffe, das alles hilft Ihnen.

7voto

Vipul Punkte 31756

Einbeziehen. android:singleLine="true"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X