android 当我单击布局功能时,如何显示全屏对话框或导航到其他屏幕?

4ngedf3f  于 2022-12-16  发布在  Android
关注(0)|答案(1)|浏览(123)

1.我有应用导航栏和根导航图。
1.我想知道两种方法,全屏对话框,也导航到一个新的屏幕。
我想做的是...

Column(
        modifier = Modifier
            .width(97.dp)
            .clickable {
                Dialog(onDismissResult = { /*TODO*/ }) {

                }
            }
        ,
        horizontalAlignment = Alignment.CenterHorizontally

但是在可点击的情况下,组合函数是不可调用的。
所以,我尝试用这个,

val isClicked = remember { mutableStateOf(false) }

    Column(
        modifier = Modifier
            .width(97.dp)
            .clickable {
                isClicked.value = !isClicked.value
            },
        horizontalAlignment = Alignment.CenterHorizontally
    ) 

    if(isClicked.value){
        // show full screen dialog or navigate to some screen.
    }

这里有两个问题。
1.我尝试使用对话框功能。

Dialog(
    onDismissResult: () -> Unit,
    properties: DialogProperties = DialogProperties(),
    content: @Composable () -> Unit
)

但是,这不会显示全屏,但只是下一个项目.(它在GridLayout中,当我单击一个项目时,对话框需要显示以添加该项目.)
1.对于导航,我尝试了,各种方式,但我还没有找到任何明确的解决方案...
你能帮我个忙吗?或者给我点建议?

6uxekuva

6uxekuva1#

这应该做一个简单的全屏弹出的技巧

var showPopup by remember { mutableStateOf(false) }

    Box(Modifier
        .background(Color.Blue)
        .fillMaxSize()) {
        Button(onClick = { showPopup = true }) {
            Text("Show popup")
        }
    }

    if (showPopup) {
        Popup(
            onDismissRequest = { showPopup = false }
        ) {
            Box(Modifier
                .background(Color.Red)
                .fillMaxSize()) {
                Button(onClick = { showPopup = false },
                    modifier = Modifier.align(Alignment.Center)) {
                    Text("Hide popup")
                }
            }
        }
    }

不过,如果您希望正确导航,则可能应该使用this

相关问题