【问题标题】:How to handle overlapping button OnTouch Event in Android如何在 Android 中处理重叠按钮 OnTouch 事件
【发布时间】:2017-03-30 06:39:58
【问题描述】:


我正在开发一个具有多个重叠按钮的 android 应用程序,我想对每个按钮的触摸事件执行一些操作(我通过 java 代码而不是 XML 添加这些按钮)。
Overlapping buttons

@Override
public boolean onTouchListener(View v, MotionEvent event)
{
    if(MotionEvent.ACTION_MOVE){
       //action to perform
    }
    return true;
}


我想要做的是,当我触摸按钮 1 并分别向按钮 2 和按钮 3 移动而不离开屏幕时,当我的手指越过按钮 2 时,按钮 2 触摸动作应该执行并且代码应该停止执行按钮 1 动作。

目前发生的情况是,当我触摸按钮 1 并经过按钮 2 时,代码仍在执行按钮 1 操作,一旦我离开屏幕并触摸按钮 2 或与它们关联的按钮 3 操作开始执行。
我想在触摸任何按钮并移过任何其他按钮时执行与按钮相关的操作,因此代码应识别我正在触摸的按钮并仅执行与该按钮相关的操作。

如有不明白请回复...

【问题讨论】:

    标签: android button ontouchlistener


    【解决方案1】:

    您必须从父 ViewGroup 监听和拦截您感兴趣的触摸事件。有关详细信息,请参阅here

    来自ViewGroup#onInterceptTouchEvent(MotionEvent ev)的文档:

    实现此方法以拦截所有触摸屏运动事件。这使您可以在事件被分派给您的孩子时观看它们,并在任何时候取得当前手势的所有权。

    【讨论】:

    • 如何在 android XML 中使用 Existing RelativeLayout 来实现这个方法?如果您可以通过代码给出任何示例,那将非常有帮助。
    • 问题仍未解决.. 让我解释一下,我可以将视图的 onTouch 的 return false 设置为处理先前孩子的触摸事件,在我的图中:- 如果我触摸按钮 3,那么它将调度事件到前一个子项(按钮 2,然后是按钮 1),但我想要的是,如果我触摸按钮 1,然后移动到按钮 2(这是按钮 1 的顶部子项),它不会将事件发送到按钮 2 或按钮 3。
    猜你喜欢
    • 1970-01-01
    • 2019-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    相关资源
    最近更新 更多