EditText焦点

需求

EditText 有时候进入界面就取得焦点,有时候是进入没有取得焦点,但是点击后需要取得焦点。

  • 在EditText的父控件中添加两样属性,与EditText抢焦点。
     android:focusableInTouchMode="true"
     android:focusable="true 

需求

在ViewPager中有4个fragment,第一个fragment中点击后出现弹框DialogFragment,然后弹框中DialogFragment中有4个fragment,其中一个有EditText,取得焦点后弹出软键盘,是去焦点隐藏软键盘。
也即是有3层Fragment嵌套,

  • 问题是:点击弹框外面,调用隐藏软键盘。
    下面是显示软键盘代码:
private void showInput() {
        try {
            InputMethodManager inputMethodManager = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
            inputMethodManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
        } catch (Exception e) {
            Log.e(TAG, "showInput: exception: " + e.toString());
        }
    }

这是EditText是去焦点,隐藏软件盘代码:

 private void hideInput(EditText view) {
        try {
            InputMethodManager inputMethodManager = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
            inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
        } catch (Exception e) {
            Log.e(TAG, "hideInput: Exception:" + e.toString());
        }
    }

这是是去在OnDestroyView方法中调用隐藏软键盘代码:

 private void destroyInput() {
       try {
           InputMethodManager inputMethodManager = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
           View               v                  = getActivity().getCurrentFocus();
           inputMethodManager.hideSoftInputFromWindow(v.getWindowToken(), 0);
       } catch (Exception e) {
           Log.e(TAG, "hideInput: Exception:" + e.toString());
       }
   }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容