0

我创建了一个 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);
                }
            }
        });
4

4 回答 4

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);
    }
}
于 2013-11-12T09:45:00.810 回答
0

您只是在检查 hasFocus,这似乎导致了您的问题。你应该检查这样的事情

    if(v.getId() == R.id.your_edit_text && hasFocus)
于 2013-11-12T09:45:55.363 回答
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);
    }
于 2013-11-12T09:45:57.763 回答
0

如果您想隐藏软键盘,请执行此操作...

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(xxx.getWindowToken(), 0);

xxx您要在其中隐藏键盘的编辑文本在哪里。如果您有多个要应用相同功能的编辑文本,请执行相同操作。

于 2013-11-12T09:46:49.443 回答