我尝试通过扩展View并覆盖onDraw和onTouchEvent方法来制作自定义视图 . 当customview不在前景时(在其他视图后面绘制线条)可以正常工作,但是当我将它带到前台时,事情变得奇怪,我无法与按钮交互 . 我的问题类似于模式锁定,但是当我检查代码时,人们手动编写按钮命中框(如果手指悬停在某些坐标事件触发器上) .

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    val button = findViewById<Button>(R.id.button1)
    button.setOnClickListener {

    }
}

override fun onResume() {
    super.onResume()
    val newView = MyView(this)
    frameLayout1.addView(newView)
  //  constraintLayout.bringToFront()
}
class MyView(context: Context)// TODO Auto-generated constructor stub
    : View(context) {
    private val paint = Paint()
    var startX: Int = 0
    var startY: Int = 0
    var endX: Int = 0
    var endY: Int = 0

    override fun onDraw(canvas: Canvas) {
        super.onDraw(canvas)
        paint.strokeWidth=21f
        paint.color = Color.parseColor("#CD5C5C")
        canvas.drawLine(startX.toFloat(),startY.toFloat(),endX.toFloat(),endY.toFloat(),paint)
    }
    override fun onTouchEvent(event: MotionEvent): Boolean {
            when (event.action) {
                MotionEvent.ACTION_DOWN -> {
                    startX = event.x.toInt()
                    startY = event.y.toInt()
                    endX = event.x.toInt()
                    endY = event.y.toInt()
                    invalidate() }
                MotionEvent.ACTION_MOVE -> {
                    endX = event.x.toInt()
                    endY = event.y.toInt()
                    invalidate()
                }
                MotionEvent.ACTION_UP -> {
                    endX = event.x.toInt()
                    endY = event.y.toInt()
                    invalidate() }
            }
        return true
    }
}