输入法弹出,界面自动响应

当输入法出现时,为确保系统将布局大小调整为可见,可使用清单的  元素中

android:windowSoftInputMode="adjustResize"。

而为使 adjustResize元素可以成功起作用,要在activity的根布局上添加fitsSystemWindows="true"。

 

输入法弹出响应与沉浸式状态栏冲突

但如果此时页面是沉浸式状态栏状态,则会发现沉浸式失效、状态栏颜色异常。原本延伸至状态栏的显示内容,被顶了下来。

本质上是fitSystemWindows与沉浸式显示的冲突,给显示内容与状态栏之间插入了系统组件的padding距离,手动置为0即可。

网上的推荐解决办法是,重写activity根布局的viewGroup组件的fitSystemWindows()方法。

    @Override    protected boolean fitSystemWindows(Rect insets) {        insets.top = 0;        return super.fitSystemWindows(insets);    }

 

fitSystemWindows()方法,在高版本中被废弃

但是今天发现,在高版本中该fitSystemWindows()方法已被废弃,于是在源码方法注释中看到,推荐使用

dispatchApplyWindowInsets(WindowInsets)、
onApplyWindowInsets(WindowInsets)、
setOnApplyWindowInsetsListener(android.view.View.OnApplyWindowInsetsListener)等方法来替代。

android输入法弹出调整布局与沉浸式状态栏冲突+fitSystemWindows()被弃用问题_第1张图片

 

在高版本新方法,dispatchApplyWindowInsets方法中,逻辑的相同实现

于是在新方法中重写 相同逻辑的实现、亲测可用:

    @Override    public WindowInsets dispatchApplyWindowInsets(WindowInsets insets) {        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) {            Insets b = null;            b = Insets.of(0, -insets.getSystemWindowInsets().top                    , 0, 0);            //使两个inset.top字段相消为0            Insets result = Insets.add(insets.getSystemWindowInsets(), b);            WindowInsets.Builder builder=new WindowInsets.Builder(insets).setSystemWindowInsets(result);            return super.dispatchApplyWindowInsets(builder.build());        }        return super.dispatchApplyWindowInsets(insets);    }

***********************************************************************************************************************************

参考资料:

https://developer.android.google.cn/training/keyboard-input/visibility

https://www.jianshu.com/p/94072850ba58

https://blog.csdn.net/u012006926/article/details/53521198

 

 

更多相关文章

  1. Android事件处理方法总结-Handler消息处理
  2. android介绍以及学习方法
  3. 【android】布局之盒模型、对齐方式、填充(类比web理解)
  4. Android最简单播放GIF动画方法
  5. Android中通过WebView控件实现与JavaScript方法相互调用的地图应
  6. Android布局文件中控件的高度与宽度属性设置
  7. 相对布局中取值为其他控件id 的属性及说明
  8. [android]笔记4-线性布局
  9. android使用mysql的方法总结

随机推荐

  1. Android(安卓)Java Framework显示Toast(无
  2. Android\OPhone自定义视图(View)
  3. android 中判断WiFi是否可用的可靠方法
  4. Android为什么推荐使用SparseArray来替代
  5. Android中绘制简单几何图形和路径Path
  6. Android:手把手带你了解实用的Android(安
  7. android 一个小例子说明handler和AlertDi
  8. Android(安卓)蓝牙学习
  9. 想要在 Android(安卓)體驗 Siri 嗎?快來試
  10. Android(安卓)属性动画使用(三)