MotionEvent Action_Up在传递事件时出现问题

时间:2012-02-15 10:24:49

标签: android ontouchlistener motion-detection

我对我的申请有一个顶级(透明)的观点 这应该是长按5秒并打开菜单。 所以我实现了一个OnTouchListener。  像这样:

public boolean onTouch(View v, MotionEvent event)
                {       
                        long downtime = 0;
                        long eventt = 0;


                        boolean returnvalue = false; 

                        switch (event.getAction() & MotionEvent.ACTION_MASK) 
                        {

                        case MotionEvent.ACTION_DOWN:
                             eventt = event.getEventTime();                         
                             returnvalue = true; 
                             break;

                        case MotionEvent.ACTION_UP:

                            downtime = event.getDownTime();
                            if (eventt - downtime > 5000)
                            {
                                Main.changePlayerDialog.show();
                                returnvalue = true;
                            }
                            else
                            { 
                                returnvalue = false;
                                //return false;
                            }
                            break;

                        default: 
                                break;
                       }                

                        return returnvalue;

                    }
                });

现在,对于5秒触摸和释放,这工作正常。 然而,当它小于5时,我返回false。 然而,MotionEvent不会传递给它下面的其他视图! 所以所有按钮和底层视图现在都被“禁用”......

如果我直接返回虚假一切正常......但是如果触发了基础按钮,则ACTION_UP不会再触发。 (似乎合乎逻辑,事件已在其他地方处理过。)

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您是否尝试过返回:

return super.onTouch(v, event);

---编辑

好吧,如果你这样做:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
     >

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="coucou"
        android:id="@+id/button" />


    <LinearLayout  android:id="@+id/linear"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
         />

</RelativeLayout>

在线性布局上添加onTouch,点击按钮,该按钮永远不会捕捉到该事件......