如何为AlertDialog设置自定义布局?

问题描述 投票:0回答:1

致电我的对话框:

alertDialog = showInfoDialog(message = "$wrongPasscodeMessage\n$retryMessage")

这是方法:

fun FragmentActivity.showInfoDialog(message: String?): AlertDialog? {
    return try {
        val customLayout = layoutInflater.inflate(R.layout.custom_layout, null)
        AlertDialog.Builder(this)
            .setView(customLayout)
            .setMessage(message)
            .setCancelable(false)
            .show()
    } catch (e: java.lang.Exception) {
        e.log()
        null
    }
}

这是我的自定义布局:

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/red"
    android:paddingStart="@dimen/dp_44"
    android:paddingEnd="@dimen/dp_44"
    app:cardCornerRadius="@dimen/dp_12" />

但是我不知道为什么我的对话框没有红色背景和圆角?我想念什么?

更新:例如,如果我更改了custom_layout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/red" >

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="350dp"
        android:scaleType="centerCrop"
        android:adjustViewBounds="true"
        android:src="@drawable/googleg_disabled_color_18"/>
</LinearLayout>

我得到这样的东西:enter image description here

但是我想要这样的东西

enter image description here

android kotlin android-alertdialog
1个回答
0
投票

按照以下内容创建事物的可绘制xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/colorPrimary"/>
    <corners android:radius="20dp" />
</shape>

形状中的半径提供您的圆角。现在,您可以将此可绘制对象设置为对话框LinearLayout的背景,或在<style>中使用自定义res/styles.xml

<style name="CustomAlertDialog" parent="Theme.AppCompat.DayNight.Dialog.Alert">
        <item name="android:windowBackground">@drawable/dialog_background</item>
        <item name="textAllCaps">false</item>
</style>

并在AlertDialog.Builder中使用该样式:

AlertDialog.Builder(this, R.style.CustomAlertDialog).setView(...

使用样式,您可以轻松地在应用程序中的所有对话框中一致地使用形状。

© www.soinside.com 2019 - 2024. All rights reserved.