Как добавить полосу прокрутки в DropdownMenu в Jetpack Compose?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как добавить полосу прокрутки в DropdownMenu в Jetpack Compose?

Сообщение Anonymous »

Я использую раскрывающееся меню для заполнения текстового поля. Проблема в том, что пользователь может не знать, что есть еще элементы для прокрутки, и я хотел бы реализовать полосу прокрутки как хорошее решение для обозначения возможности прокрутки.
TL; DR: Невозможно надежно подключить прослушиватель прокрутки любого типа для получения положения прокрутки DropdownMenu в реальном времени.

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

@Composable
@OptIn(ExperimentalMaterialApi::class)
private fun DropDownTextField(
selectedItem: Configuration?,
items: List?,
label: String,
onItemSelected: (Configuration) -> Unit,
) {
var isDropdownExpanded by remember {
mutableStateOf(false)
}

ExposedDropdownMenuBox(expanded = isDropdownExpanded, onExpandedChange = {
isDropdownExpanded = !isDropdownExpanded
}) {
OutlinedTextField(
modifier = Modifier.fillMaxWidth(),
textStyle = TextStyle.Default.copy(),
value = selectedItem?.title ?: "",
readOnly = true,
onValueChange = {},
label = {
Text(text = label)
},
trailingIcon = {
ExposedDropdownMenuDefaults.TrailingIcon(
expanded = isLanguageDropdownExpanded,
)
},
keyboardOptions = KeyboardOptions(capitalization = KeyboardCapitalization.Words),
)

DropdownMenu(
expanded = isLanguageDropdownExpanded,
onDismissRequest = {
isLanguageDropdownExpanded = false
},
modifier = Modifier.background(color = Color.White).heightIn(min = 240.dp)
.exposedDropdownSize(true),
) {
items?.forEach { item ->
DropdownMenuItem(onClick = {
onItemSelected(item)
isDropdownExpanded = false
}) {
Row(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(16.dp),
) {
Text(text = item.title, color = LightTextGary)
if (selectedItem?.id == item.id) {
Icon(
painter = painterResource(id = R.drawable.ic_don),
ontentDescription = "selected",
)
}
}
}
}
}
}
}
НО – как бы я ни старался, я не могу найти решение! Для компонента не существует готовой опции полосы прокрутки.
Что еще хуже - «традиционные» решения, такие как добавление прослушивателей .scrollable() или .draggable() к модификатору, чтобы по крайней мере, обратите внимание, что позиция прокрутки не работает. Как это было бы в простом Box() или Column() - потому что (я думаю) фактический Column() реализован компонентом уже есть функция .verticalScroll(), используемая его модификатором внутри.
Таким образом, реализуя мой собственный прослушиватель прокрутки выше, он ИЛИ ничего не делает, Или выдает мусор, Или переопределяет прокрутку меню все вместе.
Что я здесь делаю не так? Чего мне не хватает?
Я пробовал использовать подобные решения для LazyColumn(), но пока я могу подключить любой надежный прослушиватель прокрутки, я не могу добиться прогресса любое другое решение

Подробнее здесь: https://stackoverflow.com/questions/762 ... ck-compose
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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