有谁知道如何删除 navigationIcon 中的填充和 TopAppBar 中的操作?代码中没有填充,谁知道它们来自哪里。黄色 - TopAppBar,红色 - 导航图标和操作。为 TopAppBar 尝试了所有 windowInsets 0.dp ,但不起作用。我说的是黄色和红色之间的填充。
@Composable
fun RootScaffold(
content: @Composable () -> Unit,
screenTitle: String,
topBarMenuChar: Char,
floatingActionButton: @Composable () -> Unit? = {}
) {
val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed)
ModalNavigationDrawer(
drawerState = drawerState,
drawerContent = {
ModalDrawerSheet { /* Drawer content */ }
},
) {
Box(
modifier = Modifier
.fillMaxSize()
.background(Color.Black)
.paint(
painterResource(R.drawable.bg_app),
contentScale = ContentScale.Crop,
alpha = 0.12F
)
.background(MaterialTheme.colorScheme.secondary.copy(alpha = 0.12F))
.padding(horizontal = 20.dp)
) {
Scaffold(
containerColor = Color.Transparent,
topBar = { RootTopAppBar(screenTitle, topBarMenuChar) },
floatingActionButton = { floatingActionButton() }
) { paddingValues ->
Box(
modifier = Modifier
.padding(paddingValues)
) {
content()
}
}
}
}
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun RootTopAppBar(title: String, menuChar: Char) {
val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState())
TopAppBar(
colors = topAppBarColors(
containerColor = Color.Yellow
),
title = {
Text(
modifier = Modifier.padding(start = 12.dp).background(Color.Blue),
text = title
)
},
navigationIcon = {
Box(
modifier = Modifier
.size(31.dp)
.border(1.dp, MaterialTheme.colorScheme.onPrimary, CircleShape).background(Color.Red),
contentAlignment = Alignment.Center
) {
Text(
text = "$menuChar",
fontWeight = FontWeight.Bold
)
}
},
actions = {
Icon(
modifier = Modifier.background(Color.Red),
painter = painterResource(R.drawable.ic_plus),
contentDescription = "Localized description"
)
},
scrollBehavior = scrollBehavior,
)
}
TopAppBar 使用 private val AppBarHorizontalPadding = 4.dp,它是一个无法更改的常量。两种解决方案:
如果您的 TopAppBar 没有任何水平填充,那么您应该创建一个自定义 TopAppBar 如果您的 TopAppBar 有任何水平内边距,只需将它们减少 4.dp 即可。