自定义对话框未显示,仅淡化了黑色背景

时间:2019-01-17 06:48:19

标签: android kotlin alertdialog

好吧,我一直在尝试为具有静态功能的自定义对话框编写一个单独的类,这里是代码

...
EXECUTE format('
    UPDATE %I SET sfzgjsyd=''同时落在总规建设用地内外'' 
    FROM lu_plan 
    WHERE ST_Overlaps(lu_plan.geom, %I.geom) 
    AND lu_plan.is_construc = ''建设用地''', _tb1, _tb1); 
...

而我要夸大的布局是这个

class CustomDialog {
    companion object {
        fun create(context: Context, content: String) {
            context as Activity
            val inflater = context.layoutInflater
            val view = inflater.inflate(R.layout.dialog_info, null)
            val infoDialog = AlertDialog.Builder(context).create()
            view.dialog_content.text = content
            view.dialog_okButton.setOnClickListener {
                println("CLICKED")
                infoDialog.dismiss()
            }
            infoDialog.setContentView(view)

            infoDialog.show()
        }
    }
}

简单的文本查看分隔线和用于关闭对话框的按钮。

但是每当我触发按钮显示对话框时,它只会显示褪色的黑屏,而不显示对话框本身。 如果我使用<?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="wrap_content" android:layout_marginStart="10dp" android:layout_marginEnd="10dp" android:background="@drawable/dialog_background" android:orientation="vertical" android:gravity="center" android:padding="20dp"> <TextView android:id="@+id/dialog_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/iranyekanregular" android:text="Some text" android:textColor="@color/white" /> <View android:layout_width="match_parent" android:layout_height="1px" android:layout_marginLeft="20dp" android:layout_marginTop="10dp" android:layout_marginRight="20dp" android:layout_marginBottom="10dp" android:background="@color/white" /> <Button android:id="@+id/dialog_okButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/iranyekanregular" android:gravity="center" android:clickable="true" android:focusable="true" android:text="OK" /> </LinearLayout> 而不是setView(view),它几​​乎可以自我显示,但因为它只是默认对话框的中间(内容)部分,所以我看到了默认对话框的背景,仍然是关闭按钮将无法正常工作。任何帮助都感激不尽。顺便说一句,我搜索了很多没有运气的东西。

2 个答案:

答案 0 :(得分:0)

该问题是由于您没有给它任何样式而引起的。

Use  infoDialog.setView(view)

在创建对话框时,请赋予材料主题样式

val infoDialog = AlertDialog.Builder(ContextThemeWrapper(context,android.R.style.ThemeOverlay_Material_Dialog)).create()

最后

infoDialog.window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
infoDialog.show()

其余代码都可以。

答案 1 :(得分:0)

您忘记将展开的视图添加到对话框中。

1

那是缺少的行:

class CustomDialog {
companion object {
    fun create(context: Context, content: String) {
        context as Activity
        val inflater = context.layoutInflater
        val view = inflater.inflate(R.layout.dialog_info, null)
        val infoDialogBuilder = AlertDialog.Builder(context)
        infoDialogBuilder.setView(view)
        val infoDialog = infoDialogBuilder.create()
        view.dialog_content.text = content
        view.dialog_okButton.setOnClickListener {
            println("CLICKED")
            infoDialog.dismiss()
        }
        infoDialog.setContentView(view)

        infoDialog.show()
    }
}