Tra*_*Nam 6 android drop-down-menu android-jetpack-compose android-compose-dropdownmenu
我正在尝试按照本教程进行操作
但我需要更多关于下拉列表的自定义用户界面。我需要将弹出背景设置为圆形。但是当我添加.clip(RoundedCornerShape(20))到 s 修饰符中时DropdownMenu,它仍然具有白色背景

下面是我的测试可组合代码:
@ExperimentalFoundationApi
@ExperimentalCoilApi
@Composable
fun TestScreen(
navigator: AppNavigator,
) {
var expanded by remember { mutableStateOf(false) }
val items = listOf("A", "B", "C", "D", "E", "F")
val disabledValue = "B"
var selectedIndex by remember { mutableStateOf(0) }
Box(
modifier = Modifier
.fillMaxSize()
.background(Color.Cyan)
.padding(top = 70.dp)
.wrapContentSize(Alignment.TopStart)
) {
Text(
items[selectedIndex],
modifier = Modifier
.fillMaxWidth()
.clickable(onClick = { expanded = true })
.background(
Color.Gray
)
)
DropdownMenu(
expanded = expanded,
onDismissRequest = { expanded = false },
modifier = Modifier
.fillMaxWidth()
.clip(RoundedCornerShape(20))
.background(
Color.Red
)
) {
items.forEachIndexed { index, s ->
DropdownMenuItem(onClick = {
selectedIndex = index
expanded = false
}) {
Text(text = s)
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我仍然可以剪辑、绘制边框、设置背景颜色。但白色背景仍然存在。
我试图查看它的源代码DropDownMenu,但似乎找不到它的位置。我是 Jetpack Compose 的新手,所以也许我错过了一些东西。
Phi*_*hov 12
DropdownMenu由于默认参数,看起来像这样Card。
您可以更改MaterialTheme整个应用程序的相关参数或覆盖单个视图的相关参数,如下所示:
MaterialTheme(
colors = MaterialTheme.colors.copy(surface = Color.Red),
shapes = MaterialTheme.shapes.copy(medium = RoundedCornerShape(20))
) {
DropdownMenu(
expanded = expanded,
onDismissRequest = { expanded = false },
modifier = Modifier
.fillMaxWidth()
) {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
Jef*_* Ma 11
implementation "androidx.compose.material3:material3:1.0.0-alpha16"
Run Code Online (Sandbox Code Playgroud)
通过上面的依赖项,您可以使用以下命令更改 DropdownMenu 背景颜色Modifier
modifier = Modifier.background(Color.Blue),
@Composable
fun ListItemPopupMenu(
menuItems: List<String>,
onClickListeners: List<() -> Unit>,
onDismiss: () -> Unit,
showMenu: Boolean,
) {
DropdownMenu(
modifier = Modifier.background(Color.Blue),
expanded = showMenu,
onDismissRequest = { onDismiss() },
) {
menuItems.forEachIndexed { index, item ->
DropdownMenuItem(
text = { Text(text = item) },
onClick = {
onDismiss()
onClickListeners[index].invoke()
}
)
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是预览
@Preview
@Composable
fun PreviewListItemPopupMenu() {
var expanded by remember { mutableStateOf(true) }
ListItemPopupMenu(
menuItems = listOf("Menu1", "Menu2"),
onClickListeners = listOf(
{
// do nothing
},
{
// do nothing
}
),
onDismiss = {
expanded = false
},
showMenu = expanded
)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4789 次 |
| 最近记录: |