将底部填充应用于导航栏

Fra*_*esc 3 windowinsets android-jetpack-compose jetpack-compose-accompanist

我正在使用BottomNavigation来自 Accompanist 的 ,我想将其绘制在导航栏后面。我从中获得了导航栏插图WindowInsets.navigationBars.getBottom,但该值太高并且产生了很大的间隙(参见图片)。如何获得导航栏的正确内容填充?

这是代码

@Composable
fun NavigationBar(
    navController: NavHostController,
    modifier: Modifier = Modifier,
) {
    val density = LocalDensity.current
    val bottomPadding = WindowInsets.navigationBars.getBottom(density).dp
    BottomNavigation(
        modifier = modifier,
        contentPadding = PaddingValues(bottom = bottomPadding),
    ) {
        // content omitted for brevity
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

小智 5

你可以像文档一样这样做https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/package-summary#(androidx.compose.ui.Modifier).navigationBarsPadding()

class SampleActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        WindowCompat.setDecorFitsSystemWindows(window, false)
        super.onCreate(savedInstanceState)
        setContent {
            Box(
                Modifier
                    .background(Color.Blue)
                    .statusBarsPadding()) {
                Box(
                    Modifier
                        .background(Color.Green)
                        .navigationBarsPadding()) {
                    // app content
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)