Jetpack Compose 中是否有针对诸如 Spinner/Wheel Picker 或 Dropdown Button 之类的视觉组件的标准实现?
android android-spinner 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 …Run Code Online (Sandbox Code Playgroud) android drop-down-menu android-jetpack-compose android-compose-dropdownmenu
我有两个ExposedDropdownMenu在一个屏幕内有两个按钮,可以触发导航到不同的屏幕。
目前,我正在为这次崩溃而苦苦挣扎:
java.lang.IllegalArgumentException: View=androidx.compose.material.internal.PopupLayout{c8ce24f V.E...... ......ID 0,0-960,192 #1020002 android:id/content} not attached to window manager
at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:544)
at android.view.WindowManagerGlobal.updateViewLayout(WindowManagerGlobal.java:433)
at android.view.WindowManagerImpl.updateViewLayout(WindowManagerImpl.java:118)
at androidx.compose.material.internal.PopupLayout.updatePosition(ExposedDropdownMenuPopup.kt:360)
at androidx.compose.material.internal.PopupLayout.onGlobalLayout(ExposedDropdownMenuPopup.kt:469)
at android.view.ViewTreeObserver.dispatchOnGlobalLayout(ViewTreeObserver.java:1061)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2987)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1950)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8186)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1056)
at android.view.Choreographer.doCallbacks(Choreographer.java:878)
at android.view.Choreographer.doFrame(Choreographer.java:811)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1041)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7743)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:952)
Run Code Online (Sandbox Code Playgroud)
我已经尝试将 DropDown 状态提升到 ViewModel 并在导航之前折叠它,但导航的处理速度仍然比 DropDown 折叠的速度快。
目前我的应用程序正处于 Compose 迁移过程中,因此我使用 Fragments 来保存可组合项并使用导航组件进行导航。
android-jetpack-compose android-compose-exposeddropdown android-compose-dropdownmenu


你好,我需要帮助。如何制作像照片一样的下拉菜单?有什么简单的办法吗?
android kotlin android-jetpack-compose android-compose-dropdownmenu
Before, I posted here, I Googled a lot. I found the following: MaterialTheme(shapes = MaterialTheme.shapes.copy(medium = RoundedCornerShape(16.dp))){} from the following SO post: Jetpack compose DropdownMenu With rounded Corners
EDIT: I am using Material Design v3.
MaterialTheme(shapes = MaterialTheme.shapes.copy(medium = RoundedCornerShape(16.dp))) {
IconButton(
onClick = { showMenu = !showMenu }) {
Icon(imageVector = Icons.Outlined.MoreVert, contentDescription = "")
DropdownMenu(
expanded = showMenu,
onDismissRequest = { showMenu = false },
modifier = Modifier.background(MaterialTheme.colorScheme.background).padding(4.dp)
) {
DropdownMenuItem(text = { Text("Refresh", fontSize = 16.sp) }, …Run Code Online (Sandbox Code Playgroud) android android-jetpack-compose android-jetpack-compose-material3 android-compose-dropdownmenu