关于项目中很多键盘无故弹出或无隐藏的总结

1.activity的键盘问题

当布局中有EditText时,键盘有时会主动弹出影响界面效果,解决方式如下:

在清单文件-Manifest.xml中设定activity的属性

1.键盘的隐藏

android:windowSoftInputMode="stateHidden|stateUnchanged"  

"stateUnspecified"是指软键盘的状态(是否它是隐藏或可见)没有被指定。

"stateHidden" 当用户选择该Activity时,软键盘被隐藏——也就是,当用户确定导航到该Activity时,而不是返回到它由于离开另一个Activity。  

注:

在实际中中遇到一个问题:
在两个页面都有EditText作为搜索框时,进入第二个页面后,键盘始终无法弹出。

给EditText设置属性:

android:focusableInTouchMode="true"

 

另一种在activity设置:

调用隐藏系统默认的输入法

 1.

((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(Activity.this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 
PS:(Activity是当前的Activity)

2.
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

 

2.键盘的弹出

根据项目需要若设置键盘弹出如下:

android:windowSoftInputMode="stateVisible|adjustResize"

"adjustResize" 该Activity主窗口总是被调整屏幕的大小以便留出软键盘的空间(简而言之就是启动该activity时键盘默认弹出)。 

 

 

2.fragment的键盘问题

隐藏软键盘:

方法1:

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

方法2:

  View v = getActivity().getWindow().peekDecorView();
     if (v != null){
        InputMethodManager inputmanger = (InputMethodManager)getActivity()
.getSystemService(Context.INPUT_METHOD_SERVICE); inputmanger.hideSoftInputFromWindow(mv.getWindowToken(),
0); }

弹出软键盘:

editText.requestFocus();
InputMethodManager imm =(InputMethodManager)editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.SHOW_FORCED);
PS:editText.requestFocus()是把焦点放在editText这个控件上。

拓展:
点击其他部位隐藏软键盘
这个时候我们可以通过 onCreateView 返回的view设置它的setOnTouchListener方法具体代码如下:
    view.setOnTouchListener(new OnTouchListener() {

       @Override
       public boolean onTouch(View v, MotionEvent event) {
         View v = getActivity().getWindow().peekDecorView();
         if (v != null){
             InputMethodManager inputmanger = (InputMethodManager)getActivity()
.getSystemService(Context.INPUT_METHOD_SERVICE); inputmanger.hideSoftInputFromWindow(mv.getWindowToken(), 0); }
           return false; }
});

 

posted @ 2017-09-13 16:20  WidgetBox  阅读(572)  评论(0编辑  收藏  举报