在 target 升级到 Android 15之后会默认开启 EdgeToEdge 功能,导致之前的 Activity 都延伸到了边缘,使用这个方法可屏蔽这个功能
吐槽:Google 设计的 Api 是真的烂,到 Android 16 之后甚至都把
<item name="android:windowOptOutEdgeToEdgeEnforcement">true</item>开关移除掉了
object EdgeToEdgeUtil {
fun disableEdgeToEdge(application: Application) {
application.registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
override fun onActivityCreated(activity: Activity, bundle: Bundle?) {
val rootView = activity.window.decorView.rootView
ViewCompat.setOnApplyWindowInsetsListener(rootView) { v: View, insets: WindowInsetsCompat ->
val barsInsets = insets.getInsets(
WindowInsetsCompat.Type.statusBars() or
WindowInsetsCompat.Type.navigationBars()
)
v.setPadding(
barsInsets.left,
barsInsets.top,
barsInsets.right,
barsInsets.bottom
)
WindowInsetsCompat.CONSUMED
}
}
})
}
}