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:
@@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user