zoukankan      html  css  js  c++  java
  • 关于项目中很多键盘无故弹出或无隐藏的总结

    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; }
    });
  • 相关阅读:
    CheckBox单选功能
    DOTNET
    常用命令行
    不能调试的问题的解决
    url字符串中含有中文的处理
    案例:星移eWorkflow.net系统
    使用正则表达式求完整路径中的文件名
    缺少一个***.resource的报告的解决
    Mapx中的图元移动
    Distance计算的距离随经纬度不同
  • 原文地址:https://www.cnblogs.com/widgetbox/p/7515585.html
Copyright © 2011-2022 走看看