Удалите отступы из вкладки создания в ScrollableTabRow.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Удалите отступы из вкладки создания в ScrollableTabRow.

Сообщение Anonymous »

Мое требование — отображать элементы вкладки и индикатор под ними. Индикатор устроен так, что находится под текстом и закрывает дополнительное пространство до и после текста.
требование

Код: Выделить всё

 val density = LocalDensity.current
val tabWidths = remember {
val tabWidthStateList = mutableStateListOf()
repeat(items.size) {
tabWidthStateList.add(0.dp)
}
tabWidthStateList
}
ScrollableTabRow(
selectedTabIndex = selectedItemIndex,
edgePadding = 0.dp,
indicator = { tabPositions ->
TabRowDefaults.Indicator(
modifier = Modifier.customTabIndicatorOffset(
currentTabPosition = tabPositions[selectedItemIndex],
tabWidth = tabWidths[selectedItemIndex],
indicatorPaddingToTitle = indicatorPaddingToTitle,
),
color = selectedTabTextColor
)
},
divider = {}, // Removes the default divider
modifier = Modifier.fillMaxWidth()
) {
items.forEachIndexed { index, title ->
Box(
contentAlignment = Alignment.TopCenter
){
Tab(
selected = selectedItemIndex == index,
onClick = { onTabSwitch(index) },
text = {
Text(
text = title,
style = if (selectedItemIndex == index)
MaterialTheme.typography.bodyMedium.copy(
fontWeight = FontWeight.Bold,
color = selectedTabTextColor
)
else
MaterialTheme.typography.bodyMedium.copy(
fontWeight = FontWeight.Medium,
color = unselectedTabTextColor
),
onTextLayout = { textLayoutResult ->
tabWidths[index] =
with(density) { textLayoutResult.size.width.toDp() }
}
)
},
)
}

}
}
Результат выглядит следующим образом
Если вы видите, что начальное дополнение для первого элемента немного больше, чем мне нужно.
Я попробовал другой подход: обернуть элемент Tab внутри Box с помощью contentAlignment = TopStart, при этом заполнение фиксируется, но положение индикатора теряется. Еще одна вещь, когда я использую contentAlignment = Alignment.TopCenter, тогда проблема с заполнением возвращается: откуда-то, если выравнивание по центру, добавляется дополнительное дополнение вокруг вкладки.
Хочу знать, есть ли какой-нибудь способ управлять этим начальным заполнением без нарушение индикатора.


Подробнее здесь: https://stackoverflow.com/questions/793 ... abletabrow
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»