gpt4 book ai didi

Android:添加 setOnTouchListener 而不覆盖现有的?

转载 作者:搜寻专家 更新时间:2023-11-01 08:28:15 33 4
gpt4 key购买 nike

目标:我有一个自定义按钮,它已经包含我想保留的 onTouch 功能,但要在其之上添加功能。

问题:像这样添加一个 onTouch 会覆盖原来的自定义按钮功能,因此不再执行原来需要的行为。有或没有注释“@Override”不会改变任何东西:

myButton.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
MainActivity.super.onTouchEvent(event);
if (event.getAction() == MotionEvent.ACTION_DOWN) {
//Extra behavior needed
return true;
}
return false;
}
});

自定义按钮本身:

public class CustomButton extends Button implements View.OnTouchListener {
...
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
//Original needed behavior. Need to keep.
break;
...
}
return false;
}
...
}

有什么可以研究的解决方案吗?谢谢!

最佳答案

需要调用CustomButton类中的public方法

myButton.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
//try adding this line
boolean touchResult = myButton.onTouch(v, event);
if (event.getAction() == MotionEvent.ACTION_DOWN) {
//Extra behavior needed
return true;
}
return (false||touchResult);
}
});

添加触摸结果变量可确保您处理两个位置的触摸。

关于Android:添加 setOnTouchListener 而不覆盖现有的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42788916/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com