Codice di licenziare SoftKeyboard è qui sotto:
public static void hideSoftKeyboard(Activity activity) {
InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
}
Puoi mettilo in Utility Class o se lo stai definendo all'interno di un'attività, evita il parametro activity, o chiama hideSoftKeyboard (questo).
È possibile scrivere un metodo che itera su ogni vista dell'attività e controllare se si tratta di un'istanza di EditText se non è registrato un setOnTouchListener per quel componente e tutto andrà a posto. Nel caso ti stia chiedendo come farlo, in realtà è piuttosto semplice. Ecco cosa fai, scrivi un metodo ricorsivo come il seguente.
public void setupUI(View view) {
//Set up touch listener for non-text box views to hide keyboard.
if(!(view instanceof EditText)) {
view.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
hideSoftKeyboard();
return false;
}
});
}
//If a layout container, iterate over children and seed recursion.
if (view instanceof ViewGroup) {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
View innerView = ((ViewGroup) view).getChildAt(i);
setupUI(innerView);
}
}
}
chiamare questo metodo dopo SetcontentView()
con PARAMETRI come id
della vista come:
RelativeLayoutPanel android:id="@+id/parent"> ... </RelativeLayout>
Quindi chiamare setupUI(findViewById(R.id.parent))
Il codice sembra buono. Ciò costringerà la tastiera a essere nascosta in tutte le situazioni. In alcuni casi si passa 'InputMethodManager.HIDE_IMPLICIT_ONLY' come secondo parametro per assicurarsi di nascondere la tastiera solo quando l'utente non ha forzato esplicitamente la visualizzazione (tenendo premuto il menu) –
checkout la mia risposta http://stackoverflow.com/ questions/4165414/how-to-hide-soft-keyboard-on-android-after-click-outside-edittext/36786783 # 36786783 – Uzair