Kod odwołać Softkeyboard jest poniżej:
public static void hideSoftKeyboard(Activity activity) {
InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
}
Można umieść go w klasie Utility lub jeśli definiujesz go w ramach działania, unikaj parametru activity lub wywołaj hideSoftKeyboard (to).
Możesz napisać metodę, która przechodzi przez każdy widok w twojej aktywności i sprawdzać, czy jest to instancja EditText, jeśli nie rejestruje on setOnTouchListener na tym komponencie i wszystko będzie na miejscu. Jeśli zastanawiasz się, jak to zrobić, w rzeczywistości jest to całkiem proste. Oto, co robisz, piszesz metodę rekursywną, jak poniżej.
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);
}
}
}
wywołać tę metodę po SetcontentView()
z PARAMET jak id
swojego widok jak:
RelativeLayoutPanel android:id="@+id/parent"> ... </RelativeLayout>
Następnie zadzwonić setupUI(findViewById(R.id.parent))
Kod wydaje się być w porządku. Spowoduje to ukrycie klawiatury we wszystkich sytuacjach. W niektórych przypadkach przekazujesz 'InputMethodManager.HIDE_IMPLICIT_ONLY' jako drugi parametr, aby ukryć klawiaturę tylko wtedy, gdy użytkownik jawnie nie wymusił jej wyświetlenia (przytrzymując menu). –
Checkout moja odpowiedź http://stackoverflow.com/ pytania/4165414/how-to-hide-soft-keyboard-on-android-po-kliknięciu-poza-edittext/36786783 # 36786783 – Uzair