如何摆脱 AlertDialog 中的矩形 TextView?

How can I get rid of rectangular TextView in AlertDialog?

所以我试图将警报对话框制作成圆形,但我不能强制 TextView 为相同的形状。它总是有方形边框。 square outline / dialog phone。 我应该使用另一个视图吗?或者我根本做不到? 我的 XML TextView:xml textview

<TextView
    android:id="@+id/expressionTextView"
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:drawableTop="@drawable/correct_answer"
    android:drawableTint="@color/black"
    android:background="@drawable/oval_background"

    android:fontFamily="@font/roboto_light"
    android:gravity="center"
    android:paddingTop="110dp"
    android:paddingBottom="110dp"
    android:text="@string/youWin"
    android:elevation="30dp"

    android:textSize="40sp"
    android:layout_gravity="center" />

我正在尝试从片段启动警报对话框,所以这里是 Kotlin 代码:

 val dialogBinding = AlertDialogBinding.inflate(layoutInflater)
    val dialog = AlertDialog.Builder(activity).apply {
        setCancelable(true)
        setView(dialogBinding.root)
    }.create()
    dialog.show()

这个白色部分与TextView无关,而是与对话框的背景有关window; android 对话框与主应用程序 window 不同 window。

因此,要修复它,您需要使用 window.setBackgroundDrawable():

将透明背景应用到对话框 window 本身
val dialogBinding = AlertDialogBinding.inflate(layoutInflater)
val dialog = AlertDialog.Builder(activity).apply {
    setCancelable(true)
    setView(dialogBinding.root)
}.create().apply {
        window?.setBackgroundDrawable(ResourcesCompat.getDrawable(resources, android.R.color.transparent, null))
    }
dialog.show()

注意:我假设您已经在 oval_background.xml 中使用了可绘制的透明背景;如果你的没有工作,这是一个:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="#25C651" />
</shape>