制作一个客制化的dialog
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="26dp"
app:cardBackgroundColor="@android:color/white"
app:cardCornerRadius="10dp"
app:cardElevation="0dp"
tools:context="com.example.CustomAlertDialog">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="8dp"
android:gravity="center"
android:minWidth="300dp"
android:orientation="vertical">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:minHeight="36dp"
android:textColor="@color/gray4"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="标题" />
<ScrollView
android:id="@+id/sv_block_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toTopOf="@id/block_bottom_bar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_max="460dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_title"
app:layout_constraintWidth_min="300dp">
<TextView
android:id="@+id/tv_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="8dp"
android:minHeight="40dp"
android:gravity="center_horizontal"
android:textColor="@color/gray6"
android:textSize="textSize14sp"
tools:text="讯息" />
</ScrollView>
<LinearLayout
android:id="@+id/block_bottom_bar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<Button
android:id="@+id/btn_negative"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:minWidth="135dp"
android:minHeight="36dp"
android:text="@string/btn_cancel"
android:textColor="@color/blue5"
android:textSize="@dimen/textSize14sp" />
<Button
android:id="@+id/btn_positive"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:minWidth="135dp"
android:minHeight="36dp"
android:text="@string/btn_determine"
android:textColor="@color/blue5"
android:textSize="@dimen/textSize14sp" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
class CustomAlertDialog(context: Context) : AlertDialog(context) {
private var mTitle: String? = null
private var mMessage: String? = null
private var mSpannedMessage: Spanned? = null
private var mPositiveText: String? = context.getString(R.string.btn_determine)
private var mNegativeText: String? = context.getString(R.string.btn_cancel)
private var mPositiveClickListener: View.OnClickListener = View.OnClickListener { dismiss() }
private var mNegativeClickListener: View.OnClickListener = View.OnClickListener { dismiss() }
private var mGravity = Gravity.CENTER
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.dialog_custom_alert)
window?.setBackgroundDrawableResource(android.R.color.transparent)
initView()
}
private fun initView() {
when (mTitle) {
null -> tv_title.visibility = View.GONE
else -> tv_title.text = mTitle
}
tv_message.gravity = mGravity
when {
mSpannedMessage != null -> tv_message.text = mSpannedMessage
mMessage == null -> sv_block_content.visibility = View.GONE
else -> tv_message.text = mMessage
}
if (mPositiveText == null) {
btn_positive.visibility = View.GONE
} else
btn_positive.text = mPositiveText
if (mNegativeText == null) {
btn_negative.visibility = View.GONE
} else
btn_negative.text = mNegativeText
btn_positive.setOnClickListener(mPositiveClickListener)
btn_negative.setOnClickListener(mNegativeClickListener)
}
////
//以下设定要在 dialog.show() 之前才有效果
////
fun setTitle(title: String?) {
mTitle = title
}
fun setMessage(message: String?) {
mMessage = message
}
//set .html 语法文字
fun setMessage(spanned: Spanned) {
mSpannedMessage = spanned
}
fun setGravity(gravity: Int) {
mGravity = gravity
}
/**
* @param positiveText: Positive 按钮文字,若给 null 则隐藏按钮
*/
fun setPositiveButtonText(positiveText: String?) {
mPositiveText = positiveText
}
/**
* @param negativeText: Negative 按钮文字,若给 null 则隐藏按钮
*/
fun setNegativeButtonText(negativeText: String?) {
mNegativeText = negativeText
}
fun setPositiveClickListener(positiveClickListener: View.OnClickListener) {
mPositiveClickListener = positiveClickListener
}
fun setNegativeClickListener(negativeClickListener: View.OnClickListener) {
mNegativeClickListener = negativeClickListener
}
}
<<: 使用 Template Message 替 Line Bot 加上同意条款的功能(2)
基本运算子 最最基本的运算子-赋值运算子 「=」 是最基本的运算子,它的作用是将 「=」 右方的数值...
今天再度要进入新的篇章啦!!! 身为软件工程师,想要设计出好的系统架构,或是综观地去理解系统的话,...
天亮了 昨晚是平安夜 关於迷雾森林故事 习惯 洛神:2号玩家请继续发言 5号:我其实第一轮第二轮都觉...
甚麽是例外处理? 当Python在执行的时候,如果遇到无法处理的状况就会出现错误,导致整个程序卡住。...
梅尔倒频谱 昨天我们介绍了频谱跟梅尔频率,那有没有机会我可以把这两个结合在一起,获得更有用的资讯呢?...