首页 > 解决方案 > 调度触摸事件到画布上绘制的视图

问题描述

我正在制作一个自定义视图,我可以在其上添加项目(图像、文本等)并拖动它们,以及缩放和旋转。现在我想向该画布添加整个视图。我使用的draw(canvas)方法,View它的工作原理。但是,我无法与该视图交互,例如,如果它有一个按钮,我无法单击它,即使我将触摸事件传递给该视图。我有点这样做:

val mySubView = LayoutInflater.from(context).inflate(R.layout.item, null)

// mySubView is passed to CustomView at some point
class CustomView(context: Context, attrs: AttributeSet?) : View(context, attrs) {
    override fun onDraw(canvas: Canvas) {
        super.onDraw(canvas)
        mySubView.draw(canvas)
    }

    override fun onTouchEvent(event: MotionEvent): Boolean {
        val handled = mySubView.onTouchEvent(event)
        return handled || super.onTouchEvent(event)
    }
}

有任何想法吗 ?谢谢!

标签: androidkotlinviewtouch-event

解决方案


您将无法与在画布上绘制的视图进行交互。您没有将其添加到布局“android 样式”中,而是手动绘制 - 这意味着您需要手动确定用户是否根据点击位置和按钮绘制位置点击绘制的按钮,手动调用选择器(您还需要手动重绘选择器用法)并手动调用相应的方法。这不是在 android 上做这些事情的好方法,因为你会错过几乎所有的 android ui 框架功能,你必须手动实现它们。

问题是您正在绘制视图的图片,而不是视图本身 - 这就是问题所在。


推荐阅读