Beste Weg, um hide-Tastatur in Android

Ich würde gerne wissen, der beste Weg, um ausblenden der Tastatur nach der Eingabe von text EditText.

1) setonfocuschangelistener : Hat dieser listener wird nur ausgelöst, wenn die Schaltfläche "fertig" gedrückt wird oder wenn der Fokus wechselt von einem EditText zu anderen? Wenn ich verwendet diese Methode, ich konnte nicht die Tastatur auszublenden.

2) setOnTouchListener : Wenn ich verwendet, ich konnte die Tastatur auszublenden, aber ich bezweifle, dass es möglicherweise ein Problem mit diesem. In diesem Fall füge ich die touch-listener, um das root-LinearLayout. Folgenden code, den ich verwendet hatte:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login);

    txtUserName = (EditText)findViewById(R.id.txtUserName);
    btnLogin = (Button)findViewById(R.id.btnLogin);
    layoutView = (LinearLayout)findViewById(R.id.li);

    layoutView.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            inputManager.hideSoftInputFromWindow(txtUserName
                    .getWindowToken(), 0);
            return true;
        }
    });
}

Innerhalb der main-LinearLayout, ich bin mit den anderen zwei LinearLayouts. Das Problem, das ich konfrontiert mit dem obigen code ist, dass an einigen Punkten, wenn ich gedrückt, wird die Tastatur nicht ausgeblendet.
Meine Frage ist, dass ich bin das hinzufügen von touch-listener nur mit root-layout, geben nicht touch-listener mit anderen inner-layouts oder andere Steuerelemente(TextView). Wenn ich berühre, gegenüber anderen Steuerungen oder einige Punkte um die TextView(ie, innere Layout), Tastatur nicht versteckt.

Das bedeutet, muss ich hinzufügen touchListener allen layouts oder Steuerelemente innerhalb des root-layout?
Wie in dieser situation behandelt werden können, in einem besseren Weg?

Danke Freunde für Eure Antworten. Wir können mit dem obigen code selbst, um die Tastatur auszublenden. Der Fehler, den ich gemacht habe ist anstatt der touch-listener, um root-layout, habe ich noch die touch-listener mit einer der inneren layout.Also ich hoffe, das ist auch die beste Methode, um die Tastatur auszublenden, wenn wir berühren, die außerhalb des EditText. Noch einmal vielen Dank an alle für Ihre Antworten. Also, wenn jeder Benutzer haben Berechtigungen, markieren Sie diese als Antwort zu korrigieren, tun Sie es bitte. Nur nach überprüfung der code.

InformationsquelleAutor sree_iphonedev | 2012-05-11

Schreibe einen Kommentar