Custom view `Button` has setOnTouchListener called on it but does not override performClick
时间: 2024-04-17 11:25:47 浏览: 130
当你为自定义视图(如 `Button`)设置了触摸事件监听器 `setOnTouchListener` 时,Android 系统会对该视图进行一些默认的点击处理。为了避免出现警告 `Custom view 'Button' has setOnTouchListener called on it but does not override performClick`,你可以在自定义视图中重写 `performClick` 方法。
以下是一个示例,展示了如何在自定义按钮中重写 `performClick` 方法:
```java
public class MyButton extends Button {
public MyButton(Context context) {
super(context);
}
public MyButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean performClick() {
// 在此处执行你的点击逻辑
// ...
// 调用父类的 performClick 方法,以确保系统的默认点击处理也能正常进行
return super.performClick();
}
}
```
在上述示例中,我们创建了一个名为 `MyButton` 的自定义按钮类,并重写了 `performClick` 方法。在重写的方法中,你可以执行你想要的按钮点击逻辑。然后,通过调用父类的 `performClick` 方法,确保系统的默认点击处理也能继续执行。
使用自定义按钮类 `MyButton` 替代普通的 `Button`,即可避免警告并同时实现自定义的点击逻辑。
阅读全文