设置屏幕缩放后缩放距离变为双倍

复现步骤(问题)

  1. 在Android6.0系统中设置屏幕缩放,向内缩小屏幕任意范围
  2. 在一定的条件下,如关闭一个dialog风格的activity、关闭popupwindow
  3. 会发现向内缩小的屏幕尺寸变大一倍

解决

通过Android Studio中的layout inspector分析发现:屏幕缩放的实现方式是在DecorView中设置padding进行屏幕变化,但出现问题后,一个id为action_bar_rootFitWindowsLinearLayout中也出现了相同数值的padding。找到相应的abc_screen_simple.xml后发现这个View上配置了android:fitsSystemWindows="true"

大部分的时候,你的应用都不会在状态栏和导航栏下面显示内容,如果你需要在他们下面显示内容,则需要确保你应用的可交互控件(比如按钮)不要显示在系统窗口下面了。 android:fitsSystemWindows=“true” 默认行为就是通过在 View 上设置和系统窗口一样高度的边框(padding )来确保你的内容不会出现到系统窗口下面。

https://blog.chengyunfeng.com/?p=905

所以将这个fitsSystemWindows值改为false即可。

1
2
3
4
5
6
7
8
override fun onResume() {
super.onResume()

handler.post {
// 更改为false
window.decorView.findViewById<View>(R.id.action_bar_root).fitsSystemWindows = false
}
}
作者

Hanani

发布于

2021-05-07

更新于

2022-01-12

许可协议