对话框逻辑修改

This commit is contained in:
zhanglei
2026-03-17 09:20:34 +08:00
parent 06352cbf11
commit 222c1e4570
@@ -4,7 +4,6 @@ import android.app.AlertDialog
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Build
import android.os.Bundle
import android.view.Gravity
import android.view.LayoutInflater
@@ -21,17 +20,11 @@ import com.xjjk.healthyclients.databinding.DialogAppraiseBinding
class AppraiseDialog constructor(
context: Context
) : AlertDialog(context) {
lateinit var mOnSubmitClickListener: OnSubmitClickListener
// 提交点击监听器
var mOnSubmitClickListener: OnSubmitClickListener?=null
// 数据绑定对象
lateinit var binding: DialogAppraiseBinding
init {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
create()
} else {
onCreate(null)
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.inflate(
@@ -51,15 +44,11 @@ class AppraiseDialog constructor(
CustomToast.makeText(context, "您还没有选择星级评分", Toast.LENGTH_SHORT).show()
return@setOnClickListener
}
if (this::mOnSubmitClickListener.isInitialized) {
mOnSubmitClickListener?.onSubmitClick(this@AppraiseDialog)
}
this.cancel()
}
binding.btnClose.setOnClickListener {
if (this::mOnSubmitClickListener.isInitialized) {
mOnSubmitClickListener?.onCancelClick(this@AppraiseDialog)
}
this.cancel()
}
@@ -70,11 +59,26 @@ class AppraiseDialog constructor(
return this
}
/**
* 评分提交回调接口
*/
interface OnSubmitClickListener {
/**
* 提交按钮点击回调
*/
fun onSubmitClick(viewDialog: AppraiseDialog)
/**
* 关闭按钮点击回调
*/
fun onCancelClick(viewDialog: AppraiseDialog){}
}
/**
* 设置对话框标题
* @param title 标题文本
* @param titleSize 标题字体大小,默认 18f
* @return 返回当前对象,支持链式调用
*/
fun setDialogTitle(title: String, titleSize: Float = 18f): AppraiseDialog {
binding.tvTitle.visibility = View.VISIBLE
binding.tvTitle.text = title
@@ -82,35 +86,67 @@ class AppraiseDialog constructor(
return this
}
/**
* 设置评价内容输入框提示文本
* @param text 提示文本
* @param textSize 字体大小,默认 13f
* @return 返回当前对象,支持链式调用
*/
fun setContentHint(text: String, textSize: Float = 13f): AppraiseDialog {
binding.etAppraise.hint = text
binding.etAppraise.textSize = textSize
return this
}
/**
* 设置提交按钮文本
* @param text 按钮文本
* @param btnTextSize 字体大小,默认 18f
* @return 返回当前对象,支持链式调用
*/
fun setBtnText(text: String, btnTextSize: Float = 18f): AppraiseDialog {
binding.btnSubmit.text = text
binding.btnSubmit.textSize = btnTextSize
return this
}
/**
* 设置对话框是否可取消
* @param flag true 可取消,false 不可取消
* @return 返回当前对象,支持链式调用
*/
fun setDialogCancelable(flag: Boolean): AppraiseDialog {
setCancelable(flag)
return this
}
/**
* 获取用户输入的评价内容
* @return 评价文本
*/
fun getAppraiseContext(): String {
return binding.etAppraise.text.trim().toString()
}
/**
* 获取评分条控件
* @return RatingBar 对象
*/
fun getRatingBar(): RatingBar {
return binding.ratingBar
}
fun getRating(): Float {
return getRatingBar().rating
}
/**
* 获取匿名状态
* 获取用户选择的星级评分
* @return 评分值(0-5
*/
fun getRating(): Float {
return binding.ratingBar.rating
}
/**
* 获取匿名评价状态
* @return true 为匿名,false 为非匿名
*/
fun getAnonymityStatus(): Boolean {
return binding.cbAnonymity.isChecked