致电我的对话框:
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>
但是我想要这样的东西
按照以下内容创建事物的可绘制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(...
使用样式,您可以轻松地在应用程序中的所有对话框中一致地使用形状。