繁体   English   中英

MotionEvent.ACTION_CANCEL阻止我的按钮上的后续ACTION_UP

[英]MotionEvent.ACTION_CANCEL is blocking subsequent ACTION_UP on my button

我的一个片段上有一个按钮,它位于相对布局中。 它是一个相当大的按钮,当我胖手指时,我得到一个ACTION_CANCEL运动事件而不是ACTION_DOWN(它用指尖完美地工作)。 这可以防止它注册后续的ACTION_UP(我假设视图的父节点正在接管)。 我尝试在父级上使用requestDisallowInterceptTouchEvent()方法,但无济于事。

这是我的onTouch实现:

    @Override
    public boolean onTouch(View view, MotionEvent event) {

    //debugging
    Log.v("TOUCH EVENT", event.toString());


    int action = event.getAction(); 





    if (action == MotionEvent.ACTION_DOWN) {
        mButton.getParent().requestDisallowInterceptTouchEvent(true);
        //Do stuff...

        return true;

    } else if (action == MotionEvent.ACTION_UP) {

        //Do other stuff...

        return true;

    } else if (action == MotionEvent.ACTION_CANCEL){

        return false;
        //Toast.makeText(context, "Your thumb is too fat.", Toast.LENGTH_SHORT).show();
    }


    return false;
}

请注意,该按钮还使用自定义背景资源。 按下按钮时,我启动AsyncTask,背景根据该任务的进度而变化。 我不确定这是否与问题有关。

编辑:我一直沿着View层次结构走到ViewRootImpl,但仍然没有运气调用requestDisallowInterceptTouchEvent()。 奇怪的是,当我的按钮粘住时,这个显示在日志中:

08-26 11:06:15.287:D / ViewRootImpl(5428):[ViewRootImpl]动作取消 - 1,s:31 s(atmel): - 1.0 eccen:1.3333334

很明显,似乎该动作要么在它进入ViewRootImpl之前被取消,要么就在之后被取消。 这怎么可能呢?

更新:这个没有进展......任何人?

更新2:我认为这可能是设备相关的问题。 我正在使用Galaxy S4

这似乎与Galaxy S4的设备相关问题,我无法在其他设备上重现它。 如果拾取了MotionEvent.ACTION_CANCEL ,我最终只是取消了该任务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM