fix: 图片点击放大修复(clickable + 关闭事件)

- 缩略图加 isClickable/isFocusable 防止被 ScrollView 拦截
- 全屏大图的 overlay 和 imageView 都设点击关闭
- 加日志确认 showFullImage 被触发

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
dongliang
2026-05-07 12:27:49 +09:30
parent cacbdb6aaa
commit caa38c53d8

View File

@@ -433,20 +433,28 @@ class TaskListFragment : BaseFragment<FragmentTaskListBinding>() {
} }
scaleType = android.widget.ImageView.ScaleType.CENTER_CROP scaleType = android.widget.ImageView.ScaleType.CENTER_CROP
setBackgroundColor(requireContext().getColor(R.color.card_background)) setBackgroundColor(requireContext().getColor(R.color.card_background))
isClickable = true
isFocusable = true
} }
loadImage(imageView, pic.url) loadImage(imageView, pic.url)
// 点击放大全屏查看 // 点击放大全屏查看
imageView.setOnClickListener { showFullImage(pic.url) } val picUrl = pic.url
imageView.setOnClickListener { showFullImage(picUrl) }
binding.picContainer.addView(imageView) binding.picContainer.addView(imageView)
} }
} }
/** 全屏显示大图(覆盖在当前页面上,点击关闭) */ /** 全屏显示大图(覆盖在当前页面上,点击任意位置关闭) */
private fun showFullImage(url: String) { private fun showFullImage(url: String) {
val container = requireActivity().findViewById<FrameLayout>(R.id.dialog_container) val container = requireActivity().findViewById<FrameLayout>(R.id.dialog_container)
val overlay = FrameLayout(requireContext()).apply { val overlay = FrameLayout(requireContext()).apply {
setBackgroundColor(0xE0000000.toInt()) // 半透明黑 layoutParams = FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.MATCH_PARENT
)
setBackgroundColor(0xE0000000.toInt())
isClickable = true isClickable = true
isFocusable = true
} }
val imageView = android.widget.ImageView(requireContext()).apply { val imageView = android.widget.ImageView(requireContext()).apply {
layoutParams = FrameLayout.LayoutParams( layoutParams = FrameLayout.LayoutParams(
@@ -454,15 +462,15 @@ class TaskListFragment : BaseFragment<FragmentTaskListBinding>() {
FrameLayout.LayoutParams.MATCH_PARENT FrameLayout.LayoutParams.MATCH_PARENT
) )
scaleType = android.widget.ImageView.ScaleType.FIT_CENTER scaleType = android.widget.ImageView.ScaleType.FIT_CENTER
setPadding(0, 0, 0, 0)
} }
overlay.addView(imageView) overlay.addView(imageView)
// 点击关闭
overlay.setOnClickListener {
container.removeView(overlay)
}
container.addView(overlay) container.addView(overlay)
// 点击任意位置关闭(包括图片本身)
val dismiss = { container.removeView(overlay) }
overlay.setOnClickListener { dismiss() }
imageView.setOnClickListener { dismiss() }
// 加载大图 // 加载大图
Timber.d("查看大图: $url")
loadImage(imageView, url) loadImage(imageView, url)
} }