Я хочу, чтобы категории:
- прокручивались горизонтально
- выглядели как закругленные фишки
- выделяли выбранную фишку другим цветом фона
- обновляли выбор при нажатии
Горизонтально прокручиваемый список закругленных фишек, в котором одновременно выбирается только одна фишка.
Мой текущий код:
Код: Выделить всё
@Composable
fun MeditationCategory() {
val categories = listOf(
"Meditations",
"Quick Meditations",
"Yoga for Health",
"Trending Today",
"Sounds and Music",
"Yoga",
"Sleep Stories",
"Breathing"
)
var selectedCategory by remember { mutableStateOf("Meditations") }
Column(
modifier = Modifier
.padding(horizontal = 16.dp, vertical = 12.dp)
) {
Text(
"Categories",
fontSize = 20.sp,
fontWeight = FontWeight.Bold,
color = Color.Black
)
Spacer(modifier = Modifier.height(12.dp))
FlowRow(
mainAxisSpacing = 10.dp,
crossAxisSpacing = 10.dp
) {
categories.forEach { category ->
CategoryChip(
text = category,
selected = selectedCategory == category,
onClick = { selectedCategory = category }
)
}
}
}
}
Код: Выделить всё
@Composable
fun CategoryChip(
text: String,
selected: Boolean,
onClick: () -> Unit
) {
Box(
modifier = Modifier
.wrapContentWidth()
.clickable { onClick() }
.background(
color = if (selected) Color(0xFFFF8A80) else Color.White,
shape = RoundedCornerShape(50)
)
.border(
width = if (selected) 0.dp else 1.dp,
color = Color(0xFFE0E0E0),
shape = RoundedCornerShape(50)
)
.padding(horizontal = 16.dp, vertical = 10.dp)
) {
Text(
text = text,
color = if (selected) Color.White else Color.Black,
fontSize = 14.sp,
fontWeight = FontWeight.Medium
)
}
}
Я использую FlowRow, который создает обернутую сетку.
Но я хочу, чтобы категории прокручивались горизонтально, как на снимке экрана.
см. изображение здесь
Подробнее здесь: https://stackoverflow.com/questions/798 ... -like-this
Мобильная версия