码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-09-13 17:24:00      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:boolean   edit   gets   get   android   而不是   ken   oncreate   state   

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; }
});

 

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

标签:boolean   edit   gets   get   android   而不是   ken   oncreate   state   

原文地址:http://www.cnblogs.com/widgetbox/p/7515585.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!