Jetpack Compose 制作自定义对话框

1. Jetpack Compose 的基本对话框

让我们从基础开始。以下是使用 Jetpack Compose 创建简单对话框的方法:

@Composable 
fun  SimpleDialog (showDialog: Boolean , onClose: () -> Unit ) { 
    if (showDialog) { 
        // 此可组合项显示一个对话框
        AlertDialog( 
            onDismissRequest = { 
                onClose()   // 关闭时关闭对话框
            }, 
            title = { 
                Text(text = "简单对话框" ) 
            }, 
            text = { 
                Text( "这是 Jetpack Compose 中的一个基本对话框。" ) 
            }, 
            contactButton = {
                按钮(onClick = onClose) { 
                    Text( "确定" ) 
                } 
            } 
        ) 
    } 
}

在此示例中,AlertDialog是一个显示对话框的内置可组合项。onDismissRequest对话框关闭时会调用回调。

2. 自定义内容对话框

Jetpack Compose 允许您自定义对话框的内容。以下是包含自定义内容的对话框的示例:

@Composable 
fun  CustomContentDialog (showDialog: Boolean , onClose: () -> Unit ) { 
    if (showDialog) { 
        Dialog(onDismissRequest = onClose) { 
            // 对话框内的自定义内容
            ( 
                contentAlignment = Alignment.Center, 
                modifier = Modifier.size ( 200.dp ).background(Color.White) 
            ) { 
                Text( "自定义内容对话框" ) 
            } 
        } } 
    }

在此示例中,我们使用Dialog可组合项并使用可组合项自定义其内容Box

3. 带有用户输入的高级对话框

对于更高级的用例,您可能需要一个捕获用户输入的对话框。以下是实现这一目标的方法:

@Composable 
fun  InputDialog (showDialog: Boolean , onClose: ( String ) -> Unit ) { 
    var input by Remember { mutableStateOf( "" ) } 

    if (showDialog) { 
        AlertDialog( 
            onDismissRequest = { 
                onClose(input)   // 返回输入对话框被关闭
            }, 
            title = { 
                Text(text = "Input Dialog" ) 
            }, 
            text = { 
                // 用于捕获用户输入的
                TextField TextField(
                    value = input, 
                    onValueChange = { input = it }, 
                    label = { Text( "请输入内容" ) } 
                ) 
            }, 
            informButton = { 
                Button(onClick = { onClose(input) }) { 
                    Text( "确认" ) 
                } 
            } 
        ) 
    } 
}

在这里,我们添加了一个TextField内部AlertDialog来捕获用户输入。然后输入通过onClose回调传回。

结论

Jetpack Compose 提供了一种多功能且高效的方法来设计适合您的应用程序需求的自定义对话框。从基本的警报到捕获用户输入的更复杂的设计,可能性是巨大的,仅受您的想象力的限制。

阅读全文
下载说明:
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.dandroid.cn/archives/20763,转载请注明出处。
0

评论0

显示验证码
没有账号?注册  忘记密码?