Android kotlin onTouchListener 要我覆盖 performClick()

标签 android android-studio kotlin

我试图消除 Android Studio 希望我的 onTouchListener 覆盖我所做的 performClick 的警告,但警告仍然存在。

draggableBar!!.setOnTouchListener(View.OnTouchListener { view, motionEvent ->
    when (motionEvent.getAction()) {
        MotionEvent.ACTION_DOWN -> {

        }
        MotionEvent.ACTION_UP -> {
            view.performClick()
        }
    }

    return@OnTouchListener true
})

这可能是 Android Studio 错误还是我做错了什么?

最佳答案

好吧,我有同样的问题,但我通过覆盖 onTouch 监听器解决了它。

默认的 onTouch 要我们重写 performClick(),但这即使通过 view.performClick() 调用该方法也不起作用。

因此,像这样覆盖你的 onTouch:

override fun onTouch(view: View, motionEvent: MotionEvent): Boolean {
    when (view) {
        draggableBar -> {
            when (motionEvent.getAction()) {
                MotionEvent.ACTION_DOWN -> {

                }
                MotionEvent.ACTION_UP -> {
                    view.performClick()
                }
            }
        }
        otherButtonHere -> {
            //your welcome
        }
    }

    return true
}

这样,您可以在所有可点击的 View 中使用单个 onTouch()。

不要忘记在您的类(class)中实现:

View.OnTouchListener

并设置监听器:

draggableBar!!.setOnTouchListener(this)

希望对您有所帮助! :)

关于Android kotlin onTouchListener 要我覆盖 performClick(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46171379/

相关文章:

android - 绘制具有一定像素宽度的线

Android - 应用程序未运行。错误 : The minCompileSdk specified in a dependency's AAR metadata is greater than this module's compileSdkVersion

android - 如何在 Android 模拟器上禁用保存状态?

kotlin - 如何实现自定义类型转换

android - 如何使用 Espresso 测试创建点击按钮的延迟

java - 在android中按下后退按钮后如何停止finish()方法?

android - 添加 Eclipse "Android Library"项目并通过 Maven 构建

javascript - 如何在webview中的js中调用java中的变量

android - 挂起函数会挂起协程吗?

java - 我应该使用哪种设计模式来通知更改? Java/Kotlin 安卓