refactor(dialog): 优化 CommonDialog 代码质量
- 修复 setPositiveButton 中 lambda 隐式参数 it 被遮蔽的问题 - 提取 isMaster 为局部变量,消除重复计算 - addContentView 挂载前先 removeAllViews(),防止重复添加
This commit is contained in:
@@ -53,7 +53,7 @@ open class CommonDialog(
|
|||||||
/** 设置右侧确认按钮文字及点击回调(3按钮模式下对应底部按钮),点击后自动关闭弹窗 */
|
/** 设置右侧确认按钮文字及点击回调(3按钮模式下对应底部按钮),点击后自动关闭弹窗 */
|
||||||
fun setPositiveButton(text: String, onClick: (() -> Unit)? = null): CommonDialog = apply {
|
fun setPositiveButton(text: String, onClick: (() -> Unit)? = null): CommonDialog = apply {
|
||||||
positiveText = text
|
positiveText = text
|
||||||
positiveClick = onClick?.let { { it(); true } }
|
positiveClick = onClick?.let { cb -> { cb(); true } }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -99,9 +99,9 @@ open class CommonDialog(
|
|||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
// 弹窗不允许点击外部关闭
|
// 弹窗不允许点击外部关闭
|
||||||
setCancelable(false)
|
setCancelable(false)
|
||||||
|
val isMaster = GlobalData.deviceRole == DeviceRole.MASTER
|
||||||
window?.run {
|
window?.run {
|
||||||
val screenWidth = context.resources.displayMetrics.widthPixels
|
val screenWidth = context.resources.displayMetrics.widthPixels
|
||||||
val isMaster = GlobalData.deviceRole == DeviceRole.MASTER
|
|
||||||
attributes = attributes.apply {
|
attributes = attributes.apply {
|
||||||
width = if (isMaster) (screenWidth * 0.72f).toInt() else (screenWidth * 0.60f).toInt()
|
width = if (isMaster) (screenWidth * 0.72f).toInt() else (screenWidth * 0.60f).toInt()
|
||||||
}
|
}
|
||||||
@@ -111,7 +111,7 @@ open class CommonDialog(
|
|||||||
setWindowAnimations(R.style.CommonDialogAnimation)
|
setWindowAnimations(R.style.CommonDialogAnimation)
|
||||||
}
|
}
|
||||||
// 主/从设备边距微调:主设备内容区域更大,适当增加上下留白
|
// 主/从设备边距微调:主设备内容区域更大,适当增加上下留白
|
||||||
val verticalMargin = if (GlobalData.deviceRole == DeviceRole.MASTER) 48.dp else 36.dp
|
val verticalMargin = if (isMaster) 48.dp else 36.dp
|
||||||
binding.tvTitle.updateLayoutParams<LinearLayout.LayoutParams> { topMargin = verticalMargin }
|
binding.tvTitle.updateLayoutParams<LinearLayout.LayoutParams> { topMargin = verticalMargin }
|
||||||
binding.tvContent.updateLayoutParams<LinearLayout.LayoutParams> { bottomMargin = verticalMargin }
|
binding.tvContent.updateLayoutParams<LinearLayout.LayoutParams> { bottomMargin = verticalMargin }
|
||||||
|
|
||||||
@@ -148,6 +148,7 @@ open class CommonDialog(
|
|||||||
|
|
||||||
// 挂载自定义内容 View,并执行 tvContent 的灵活控制回调
|
// 挂载自定义内容 View,并执行 tvContent 的灵活控制回调
|
||||||
pendingContentView?.let {
|
pendingContentView?.let {
|
||||||
|
binding.llContent.removeAllViews()
|
||||||
binding.llContent.addView(it)
|
binding.llContent.addView(it)
|
||||||
binding.llContent.visibility = View.VISIBLE
|
binding.llContent.visibility = View.VISIBLE
|
||||||
tvContentConfigurator?.invoke(binding.tvContent)
|
tvContentConfigurator?.invoke(binding.tvContent)
|
||||||
|
|||||||
Reference in New Issue
Block a user