Tah*_*sif 11 tabs android android-tabs android-jetpack-compose
我想减少单个选项卡的填充。下图显示了我想要的:
我得到什么:
我目前正在使用版本 0.16.0 的“accompanist-pager”和“accompanist-pager-indicators”。
代码:
@Composable
fun Tabs(tabNames: List<String>, pagerState: PagerState, scrollToPage: (Int) -> Unit) {
TabRow(
selectedTabIndex = pagerState.currentPage,
backgroundColor = Color.White,
contentColor = Color.Black,
divider = {
TabRowDefaults.Divider(
thickness = 4.dp
)
},
indicator = { tabPositions ->
TabRowDefaults.Indicator(
modifier = Modifier.customTabIndicatorOffset(tabPositions[pagerState.currentPage]),
height = 4.dp,
color = EmeraldTheme.colors.primary
)
}
) {
tabNames.forEachIndexed { index, name ->
Tab(
text = {
Text(
text = name,
maxLines = 1,
style = globalSearchDefaultTextStyle,
fontWeight = if (pagerState.currentPage == index) FontWeight.Bold else FontWeight.Normal,
color = if (pagerState.currentPage == index) EmeraldColor.Black100 else colorResource(globalSearchR.color.darkGrey20),
)
},
selected = pagerState.currentPage == index,
onClick = {
scrollToPage(index)
}
)
}
Row { Spacer(Modifier.weight(1f, true)) }
}
}
Run Code Online (Sandbox Code Playgroud)
TabRow
使用(或)的当前版本,ScrollableTabRow
您将无法执行此操作。您将需要创建自己的TabRow
可组合项。
另外,您可能应该使用 aScrollableTabRow
而不是,TabRow
因为均匀地分配了其 的TabRow
整个可用空间。因此,内容填充并不那么重要。width
Tabs
您几乎可以复制粘贴 的整个代码ScrollableTabRow
,但修改设置tabConstraints
.
它不应该再使用minTabWidth
:
val minTabWidth = ScrollableTabRowMinimumTabWidth.roundToPx()
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以使用java反射来更改ScrollableTabRowMinimumTabWidth的值。您可以在这里投票 -> https://issuetracker.google.com/issues/226665301
try {
Class
.forName("androidx.compose.material3.TabRowKt")
.getDeclaredField("ScrollableTabRowMinimumTabWidth").apply {
isAccessible = true
}.set(this, 0f)
} catch (e: Exception) {
e.printStackTrace()
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6144 次 |
最近记录: |