美文网首页
Android 键盘遮盖界面布局问题

Android 键盘遮盖界面布局问题

作者: Felix_lin | 来源:发表于2018-06-11 10:39 被阅读83次

    一、在解决Android输入法键盘弹出问题是,我们先来了解几个常用的api

    1. <activity android:windowSoftInputMode= "A"'>

      • A="stateUnspecified" 依赖系统或者主题去设置键盘弹出
      • A="stateHidden" 控制键盘不自动弹出
      • A="stateUnchanged" 保持上一个Activity的键盘弹出属性设置
      • A="stateAlwaysHidden" 当Activity主窗口获取焦点时,软键盘一直隐藏
      • A="stateVisible" 在没有输入框的情况下也可点击弹出键盘
      • A="stateAlwaysVisible" 总是显示状态
      • A="adjustUnspecified" 默认设置,可能遮挡内容,比较死板
      • A="adjustResize" 自动调整屏幕大小,留足软键盘空间
      • A="adjustPan" 系统通过布局移动来调节用户布局,保证输入框一直在视野范围内
    2. <activity android:configChanges="B">

      • B="keyboard" 键盘模式发生变化,当需要调用自定义键盘时使用
      • B="keyboardHidden" 打开手机自带键盘 键盘的可用性发生了改变
      • B="orientation" 横竖屏切换
      • B="fontScale" 全局字体发生变化
      • B="ScreenSize" 屏幕大小变化

    二、这次的问题是,一个表单填写,键盘挡住下方输入框,每次都得关闭键盘从新点击输入

    1. 解决--首先在清单文件里 activity 中标注:

       <activity android:name="****Activity" 
           android:configChanges="keyboardHidden|orientation|screenSize"
           android:windowSoftInputMode="stateHidden|adjustResize" />
      
    2. 用scrollview包裹布局,并设置键盘遮挡的最后一个EditView控件的监听事件

      lastEdit.addTextChangedListener(new TextWatcher() {

           @Override
           public void onTextChanged(CharSequence s, int start, int before, int count) {
               scrollow.fullScroll(ScrollView.FOCUSABLES_ALL);
           }
           
           @Override
           public void beforeTextChanged(CharSequence s, int start, int count,
                   int after) {
           }
           @Override
           public void afterTextChanged(Editable s) {
           }
       });
      

    3.扩张:隐藏键盘的方法:

     @Override  
    public boolean dispatchTouchEvent(MotionEvent ev) {  
    
        // 获得当前得到焦点的View 
        View view = getCurrentFocus();  
        IBinder token=view.getWindowToken();
        InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);  
        im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS); 
           
        return super.dispatchTouchEvent(ev);  
    } 
    

    4.具体什么时候隐藏,可同伙消息传递机制或者点击事件去控制

    相关文章

      网友评论

          本文标题:Android 键盘遮盖界面布局问题

          本文链接:https://www.haomeiwen.com/subject/vcbceftx.html