make dropdown menus scrollable

fix #1906
This commit is contained in:
MM20
2026-08-30 16:53:22 +02:00
parent 9b8b083515
commit 4dff3b5ee6
6 changed files with 23 additions and 4 deletions

View File

@@ -13,6 +13,8 @@ import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.GridItemSpan
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
import androidx.compose.foundation.lazy.grid.items import androidx.compose.foundation.lazy.grid.items
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.CircularProgressIndicator
@@ -185,7 +187,8 @@ fun IconPicker(
) )
} }
DropdownMenuPopup( DropdownMenuPopup(
modifier = Modifier
.verticalScroll(rememberScrollState()),
expanded = showIconPackFilter, expanded = showIconPackFilter,
onDismissRequest = { showIconPackFilter = false } onDismissRequest = { showIconPackFilter = false }
) { ) {

View File

@@ -15,6 +15,7 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.BasicTextField import androidx.compose.foundation.text.BasicTextField
import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.DropdownMenuGroup import androidx.compose.material3.DropdownMenuGroup
import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.DropdownMenuPopup import androidx.compose.material3.DropdownMenuPopup
@@ -191,6 +192,8 @@ fun OutlinedTagsInputField(
if (completions.isNotEmpty()) { if (completions.isNotEmpty()) {
Box { Box {
DropdownMenuPopup( DropdownMenuPopup(
modifier = Modifier
.verticalScroll(rememberScrollState()),
expanded = true, expanded = true,
onDismissRequest = { completions = emptyList() }, onDismissRequest = { completions = emptyList() },
properties = PopupProperties(focusable = false) properties = PopupProperties(focusable = false)

View File

@@ -8,7 +8,8 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.offset
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.material3.DropdownMenu import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.DropdownMenuGroup import androidx.compose.material3.DropdownMenuGroup
import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.DropdownMenuPopup import androidx.compose.material3.DropdownMenuPopup
@@ -67,10 +68,12 @@ fun Icons(actions: List<ToolbarAction>, slots: Int) {
DropdownMenuPopup( DropdownMenuPopup(
expanded = showMenu, expanded = showMenu,
onDismissRequest = { showMenu = false }, onDismissRequest = { showMenu = false },
modifier = Modifier.animateContentSize() modifier = Modifier
.verticalScroll(rememberScrollState()),
) { ) {
DropdownMenuGroup( DropdownMenuGroup(
shapes = MenuDefaults.groupShapes() shapes = MenuDefaults.groupShapes(),
modifier = Modifier.animateContentSize()
) { ) {
OverflowMenuItems(items = actions.subList(slots - 1, actions.size)) { OverflowMenuItems(items = actions.subList(slots - 1, actions.size)) {
showMenu = false showMenu = false

View File

@@ -392,6 +392,9 @@ fun ColumnScope.ConfigureFavoritesWidget(
Text(stringResource(R.string.select_tag)) Text(stringResource(R.string.select_tag))
} }
DropdownMenuPopup( DropdownMenuPopup(
modifier = Modifier
.verticalScroll(rememberScrollState())
.padding(vertical = 8.dp),
expanded = showAddMenu, expanded = showAddMenu,
onDismissRequest = { showAddMenu = false }) { onDismissRequest = { showAddMenu = false }) {
if (availableTags.isNotEmpty()) { if (availableTags.isNotEmpty()) {

View File

@@ -28,6 +28,8 @@ import androidx.compose.foundation.lazy.grid.GridItemSpan
import androidx.compose.foundation.lazy.grid.rememberLazyGridState import androidx.compose.foundation.lazy.grid.rememberLazyGridState
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.DropdownMenuGroup import androidx.compose.material3.DropdownMenuGroup
import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.DropdownMenuItem
@@ -494,6 +496,7 @@ fun ReorderFavoritesGrid(viewModel: EditFavoritesSheetVM, paddingValues: Padding
) )
} }
DropdownMenuPopup( DropdownMenuPopup(
modifier = Modifier.verticalScroll(rememberScrollState()),
expanded = showAddMenu, expanded = showAddMenu,
onDismissRequest = { showAddMenu = false }) { onDismissRequest = { showAddMenu = false }) {
if (availableTags.isNotEmpty()) { if (availableTags.isNotEmpty()) {

View File

@@ -19,6 +19,8 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.DropdownMenuGroup import androidx.compose.material3.DropdownMenuGroup
import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.DropdownMenuPopup import androidx.compose.material3.DropdownMenuPopup
@@ -110,6 +112,8 @@ fun CalendarWidget(
) )
} }
DropdownMenuPopup( DropdownMenuPopup(
modifier = Modifier
.verticalScroll(rememberScrollState()),
expanded = showDropdown, expanded = showDropdown,
onDismissRequest = { showDropdown = false }) { onDismissRequest = { showDropdown = false }) {
val availableDates = viewModel.availableDates val availableDates = viewModel.availableDates