【问题标题】:Position Alert dialog in Android ComposeAndroid Compose 中的位置警报对话框
【发布时间】:2022-01-20 05:36:03
【问题描述】:

如何将 Jetpack Compose 中的警报对话框定位到屏幕底部。另外,设置透明背景。

【问题讨论】:

  • 你不能。它不是为此而设计的。创建您自己的自定义对话框并将其放置在底部。
  • 感谢@Johann,有自定义对话框的参考吗?
  • 就像你做任何可组合的一样创建一个。这里没什么特别的。
  • @Johann,我可以知道如何将撰写定位到屏幕底部,无论布局或大小如何
  • 使用一个Box,将你的内容放入box,并将Box的contentAlignment设置为bottomCenter。

标签: android android-alertdialog android-jetpack-compose


【解决方案1】:

谢谢@alekseyHunter 和@johann。我可以使用自定义布局修饰符来实现这一点。

自定义修饰符以定位警报对话框

enum class CustomDialogPosition {
    BOTTOM, TOP
}

fun Modifier.customDialogModifier(pos: CustomDialogPosition) = layout { measurable, constraints ->

    val placeable = measurable.measure(constraints);
    layout(constraints.maxWidth, constraints.maxHeight){
        when(pos) {
            CustomDialogPosition.BOTTOM -> {
                placeable.place(0, constraints.maxHeight - placeable.height, 10f)
            }
            CustomDialogPosition.TOP -> {
                placeable.place(0,0,10f)
            }
        }
    }
}

并在警报对话框实现中作为

AlertDialog( ..., modifiers = Modifiers.customDialogModifier(CustomDialogPosition.BOTTOM)) 
{
    // block
})

【讨论】:

  • 我只想实现一个像底页一样的警报。
【解决方案2】:

看起来很简单。

Box(Modifier.fillMaxSize()) {
            Column() {
                /* Content */
            }
             /* Box alert */
            Box(
                Modifier
                    .padding(horizontal = 32.dp, vertical = 16.dp)
                    .fillMaxWidth()
                    .background(Color.Transparent, RoundedCornerShape(8.dp))
                    .border(2.dp, Color.LightGray, RoundedCornerShape(8.dp))
                    .align(Alignment.BottomCenter)
            ) {
                Text(
                    text = "Alert",
                    modifier = Modifier
                        .padding(16.dp)
                        .fillMaxWidth(),
                    textAlign = TextAlign.Center,
                    color = Color.Black
                )
            }
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    相关资源
    最近更新 更多