【发布时间】:2021-09-23 16:15:45
【问题描述】:
我想创建一个自定义对话框。由于我是初学者,所以参考了这个链接:https://www.tutorialspoint.com/how-to-make-custom-dialog-with-rounded-corners-in-android
但是,我无法以编程方式更改 TextView 中的消息,因为它取决于用户选择的内容。我该怎么做? 我尝试了 body_message.text = message (如下面的代码所述),但它不起作用。提前谢谢!
<?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:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp"
android:background="@drawable/background_dialog"
>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Success"
android:textAlignment="center"
android:textAppearance="@style/TextAppearance.AppCompat.Headline" />
<TextView
android:id="@+id/body_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla eu erat tincidunt lacus fermentum rutrum."
android:textAlignment="center"
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
<Button
android:id="@+id/buttonOk"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="15dp"
android:backgroundTint="@color/teal_700"
android:text="Fechar"
android:textColor="@color/white" />
</LinearLayout>
</LinearLayout>
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val message = "testing message"
findViewById<View>(R.id.customDialog).setOnClickListener { v ->
val builder: AlertDialog.Builder = AlertDialog.Builder(this@MainActivity, R.style.CustomAlertDialog)
val viewGroup = findViewById<ViewGroup>(android.R.id.content)
val dialogView: View = LayoutInflater.from(v.context).inflate(R.layout.custom_dialog, viewGroup, false)
val buttonOk = dialogView.findViewById<Button>(R.id.buttonOk)
val body_message = findViewById<TextView>(R.id.body_message)
body_message.text = message
builder.setView(dialogView)
val alertDialog: AlertDialog = builder.create()
buttonOk.setOnClickListener { alertDialog.dismiss() }
alertDialog.show()
}
}
}
【问题讨论】: