我对我的申请有一个顶级(透明)的观点 这应该是长按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不会再触发。 (似乎合乎逻辑,事件已在其他地方处理过。)
我该如何解决这个问题?
答案 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,点击按钮,该按钮永远不会捕捉到该事件......