由于 WindowInsets 处理更改,Android 15 中 FAB 下方出现不需要的填充 - 如何修复?
从 Android 15 开始,
WindowInsets
的处理发生了变化,我遇到了 Android 14 或更低版本中不存在的问题。具体来说,就我而言,浮动操作按钮 (FAB) 下方存在不需要的填充或边距。当我的应用程序在 Android 15 上运行但在早期版本上运行时,会出现此问题。 floatingActionButton
是 androidx.compose.material3.Scaffold
的属性。
我观察到的:
WindowInsets
之间互操作的视图时。示例:
Android 15 屏幕截图:
setPadding()
和 setMargin()
方法来补偿额外的空间,但这并没有解决问题。WindowInsetsCompat
,但仍然没有找到正确的方法。问题: 如何删除 Android 15 上浮动操作按钮下方的这种不需要的填充/边距,同时在 Android 14 及更早版本中保持布局一致?
您可以通过在
contentWindowInsets
可组合项中指定
Scaffold
参数来删除不需要的填充,如下所示:
Scaffold(
modifier = Modifier.fillMaxSize(),
floatingActionButton = { /* FloatingActionButton here */ },
contentWindowInsets = WindowInsets.navigationBars.only(WindowInsetsSides.Horizontal)
) { innerPadding ->
// Scaffold content here
}
此方法限制插入仅应用水平填充,从而防止任何会影响 FloatingActionButton 的垂直填充。当您想要精确控制插图时,它非常有用。您可以阅读更多关于
WindowInsets
这里和WindowInsetsSides
这里。
但是,请注意,此解决方案在不需要垂直插入的特定情况下效果最佳。如果您的布局依赖于其他元素的全窗口插入,请注意此调整可能产生的潜在影响。