单击列表视图时隐藏键盘

时间:2015-06-08 07:10:32

标签: android android-fragments android-activity android-softkeyboard

我有一个搜索视图和下面的列表视图,其中包含一些数据,当我点击搜索视图键盘打开时这是显而易见但我想隐藏键盘当用户只需点击搜索视图而不键入当用户点击下面的列表视图时,我想在搜索视图中隐藏它。

我很确定我无法澄清这个问题,这就是为什么我要添加一些快照。 Normal Condition Hide Keyboard

  

当用户有意或无意地点击搜索视图并且没有写任何内容而只想滚动下面的列表视图时,我希望当他开始滚动时,键盘会隐藏在这里。

2 个答案:

答案 0 :(得分:0)

使用以下方法隐藏键盘

public static void hideKeyboard( Context context ) {

    try {
        InputMethodManager inputManager = ( InputMethodManager ) context.getSystemService( Context.INPUT_METHOD_SERVICE );

        View view = ( ( Activity ) context ).getCurrentFocus();
        if ( view != null ) {
            inputManager.hideSoftInputFromWindow( view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS );
        }
    } catch ( Exception e ) {
        e.printStackTrace();
    }
}

假设您的listviewlv

lv.setOnItemClickListener(new OnItemClickListener() {
      @Override
      public void onItemClick(AdapterView<?> parent, View view, int position,long id) {
          hideKeyboard();
     }
});

答案 1 :(得分:0)

最好在用户触摸listView之后立即隐藏软键。只需将OnFocusChangeListener附加到ListView即可:

    myListView.setOnFocusChangeListener(new OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
                InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(((Activity) mContext).getCurrentFocus().getWindowToken(), 0);
            }
        }
    });