出现在Android Studio3.1中,对View的自定义时,重写onTouchEvent方法时会报warn
- 全文如下
If a View that overrides onTouchEvent or uses an OnTouchListener does not also implement performClick and call it when clicks are detected, the View may not handle accessibility actions properly. Logic handling the click actions should ideally be placed in View#performClick as some accessibility services invoke performClick when a click action should occur.
- 译文如下
如果一个覆盖了onTouchEvent方法或者使用了OnTouchListener的控件没有引用performClick并且调用它的点击事件被拦截,控件可能不能合适的处理访问操作。逻辑上来讲处理点击操作应该更合理的被放置在View#performClick中,这样当点击事件发生时一些访问性操作可以成功请求调用performClick。
说明一下:
当你添加了一些点击操作,例如像setOnClickListener这样的,它会调用performClick才可以完成操作,当你重写了onTouch,就有可能把performClick给屏蔽了,这样这些点击操作就没办法完成了,所以就会有了这个警告。一般来说这个警告都是可以忽略不用管他的,但是如果处女座强迫症看着难受的话,可以这样解决这个问题,没几行代码的事
- 先加上这句
@Override
public boolean performClick() {
return super.performClick();
}
- 以及修改一下onTouch的逻辑
@Override
public boolean onTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
performClick();
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
break;
default;
}
//这里放原先在onTouchEvent里的代码
return true;
}
K.O. for ever!