我创建了一个customauto EditText字段。我在文本字段的问题是,当我点击EditText时,键盘会上升,但当我点击其他地方时,键盘仍然保持打开状态。请帮我解决这个问题
自定义自动EditText的名称是auto_list。我附上了onFocusChangeListener
auto_list.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
if (hasFocus) {
getActivity()
.getWindow()
.setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
}
else{
InputMethodManager im = (InputMethodManager)v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
}
});
答案 0 :(得分:1)
尝试以下代码
public static void hideKeyboard(Activity activity) {
InputMethodManager inputManager = (InputMethodManager) activity
.getSystemService(Context.INPUT_METHOD_SERVICE);
if (inputManager != null && activity.getCurrentFocus() != null) {
inputManager.hideSoftInputFromWindow(activity.getCurrentFocus()
.getWindowToken(), 0);
}
}
答案 1 :(得分:0)
你只是检查hasFocus,这似乎导致你的问题。你应该检查一下这样的东西
if(v.getId() == R.id.your_edit_text && hasFocus)
答案 2 :(得分:0)
试试这个:
try
{
InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
catch (Exception e)
{
// Ignore exceptions if any
Log.e("KeyBoardUtil", e.toString(), e);
}
答案 3 :(得分:0)
在您要隐藏软键盘的情况下执行此操作...
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(xxx.getWindowToken(), 0);
其中xxx
是您要隐藏键盘的编辑文本。如果您有多个要应用相同功能的编辑文本,请执行相同操作。