好吧,我一直在尝试为具有静态功能的自定义对话框编写一个单独的类,这里是代码
...
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)
,它几乎可以自我显示,但因为它只是默认对话框的中间(内容)部分,所以我看到了默认对话框的背景,仍然是关闭按钮将无法正常工作。任何帮助都感激不尽。顺便说一句,我搜索了很多没有运气的东西。
答案 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()
}
}