关闭 Android 15 EdgeToEdge 功能

30 阅读1分钟

在 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
                }
            }
        })
    }

}