4350 Stimmen

Wie kann man die Android-Softtastatur programmgesteuert schließen/ausblenden?

Ich habe eine EditText und eine Button in meinem Layout.

Nachdem Sie in das Eingabefeld geschrieben und auf die Schaltfläche Button Ich möchte die virtuelle Tastatur ausblenden, wenn ich außerhalb der Tastatur berühre. Ich nehme an, dass dies ein einfaches Stück Code ist, aber wo kann ich ein Beispiel dafür finden?

19 Stimmen

Was ist, wenn Sie nur einen EditText und mehrere Schaltflächen, wie Kontrollkästchen und Radios, haben? Der einzige Ort, an dem Sie die Tastatur benötigen, ist der einzelne EditText. Wie registrieren Sie, dass etwas anderes gewählt/angeklickt wurde, um die Tastatur auszublenden?

19 Stimmen

Ich komme mir dumm vor. Ich bin nicht in der Lage, die Tastatur auf ICS zu verstecken. Habe alle Methoden hier und Kombinationen von ihnen versucht. Keine Chance. Die Methode, um es zu zeigen, funktioniert, aber ich kann es nicht verstecken, egal, was windw Token, verstecken Flaggen, manifestieren Einstellungen oder Kerzen zu jedem Heiligen. Auf der Tastatur zeigen, sehe ich immer diese: I/LatinIME( 396): InputType.TYPE_NULL ist angegeben W/LatinIME( 396): Unerwartete Eingabeklasse: inputType=0x00000000 imeOptions=0x00000000

5 Stimmen

/** * Diese Methode wird verwendet, um die Soft-Tastatur auszublenden. * @param activity */ public void hideSoftKeyboard(Activity activity) { InputMethodManager inputMethodManager = (InputMethodManager)activity.getSystemService(Activity.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0); }

22voto

Ash Punkte 1371

Die obigen Antworten gelten für verschiedene Szenarien, aber Wenn Sie die Tastatur innerhalb einer Ansicht ausblenden möchten und Schwierigkeiten haben, den richtigen Kontext zu finden, versuchen Sie dies:

setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        hideSoftKeyBoardOnTabClicked(v);
    }
}

private void hideSoftKeyBoardOnTabClicked(View v) {
    if (v != null && context != null) {
        InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(v.getApplicationWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
    }
}

und um den Kontext zu erhalten, holen Sie ihn aus dem Konstruktor:)

public View/RelativeLayout/so and so (Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    this.context = context;
    init();
}

21voto

Peter Ajtai Punkte 55551

Wenn Sie die Softtastatur während eines Unit- oder Funktionstests schließen möchten, können Sie dies tun, indem Sie in Ihrem Test auf die Schaltfläche "Zurück" klicken:

// Close the soft keyboard from a Test
getInstrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);

Ich habe "Zurück-Button" in Anführungszeichen gesetzt, da die obige Funktion nicht die onBackPressed() für die betreffende Aktivität. Es wird lediglich die Tastatur geschlossen.

Vergewissern Sie sich, dass Sie eine kurze Pause einlegen, bevor Sie weitermachen, da es eine Weile dauert, bis die Schaltfläche "Zurück" geschlossen wird, so dass nachfolgende Klicks auf "Ansichten" usw. erst nach einer kurzen Pause (1 Sekunde ist lang genug) registriert werden.

18voto

Ian Vink Punkte 63460

So machen Sie es in Mono für Android (auch bekannt als MonoDroid)

InputMethodManager imm = GetSystemService (Context.InputMethodService) as InputMethodManager;
if (imm != null)
    imm.HideSoftInputFromWindow (searchbox.WindowToken , 0);

1 Stimmen

Was ist searchbox in dem Ausschnitt?

17voto

Asaf Pinhassi Punkte 14743

Das hat bei mir bei all dem bizarren Tastaturverhalten funktioniert

private boolean isKeyboardVisible() {
    Rect r = new Rect();
    //r will be populated with the coordinates of your view that area still visible.
    mRootView.getWindowVisibleDisplayFrame(r);

    int heightDiff = mRootView.getRootView().getHeight() - (r.bottom - r.top);
    return heightDiff > 100; // if more than 100 pixels, its probably a keyboard...
}

protected void showKeyboard() {
    if (isKeyboardVisible())
        return;
    InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    if (getCurrentFocus() == null) {
        inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
    } else {
        View view = getCurrentFocus();
        inputMethodManager.showSoftInput(view, InputMethodManager.SHOW_FORCED);
    }
}

protected void hideKeyboard() {
    if (!isKeyboardVisible())
        return;
    InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    View view = getCurrentFocus();
    if (view == null) {
        if (inputMethodManager.isAcceptingText())
            inputMethodManager.toggleSoftInput(InputMethodManager.HIDE_NOT_ALWAYS, 0);
    } else {
        if (view instanceof EditText)
            ((EditText) view).setText(((EditText) view).getText().toString()); // reset edit text bug on some keyboards bug
        inputMethodManager.hideSoftInputFromInputMethod(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
    }
}

1 Stimmen

Ich glaube, ich habe 10 Antworten ausprobiert, bevor ich diese gefunden habe. Ich hatte die Hoffnung aufgegeben. Danke Mann.

0 Stimmen

Was ist mRootView?

16voto

Naveed Ahmad Punkte 6409

Einfache und leicht zu handhabende Methode, einfach aufrufen hideKeyboardFrom(YourActivity.this); um die Tastatur zu verbergen

/**
 * This method is used to hide keyboard
 * @param activity
 */
public static void hideKeyboardFrom(Activity activity) {
    InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
}

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