findViewById(R.id.container).setFocusableInTouchMode(true);
findViewById(R.id.container).setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_BACK) {
// 隐藏键盘
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
return true;
}
return false;
}
});
上述代码中,container
是指包含EditText控件的根View。当返回键按下时会触发OnKeyListener
回调函数,隐藏键盘。
onKeyDown
方法,以保证在Fragment上按下“返回”键时也会隐藏键盘。 @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// 隐藏键盘
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getView().getWindowToken(), 0);
return true;
}
return super.onKeyDown(keyCode, event);
}
上述代码中,getView()
方法返回Fragment的布局View。当返回键按下时触发该方法,隐藏键盘。
通过上述两种方法,我们可以在Android Leanback中隐藏键盘,以提高应用的用户体验。