小编Jef*_*nes的帖子

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

我的一个片段上有一个按钮,位于相对布局内。这是一个相当大的按钮,当我粗手指它时,我得到一个 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;
}
Run Code Online (Sandbox Code Playgroud)

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

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

08-26 11:06:15.287:D / ViewRootImpl(5428):[ViewRootImpl]操作取消 - …

android android-layout android-fragments

5
推荐指数
1
解决办法
1630
查看次数