Actionbar一直隐藏着

时间:2013-12-05 22:27:18

标签: android xamarin.android xamarin-studio

我目前正在尝试使用Xamarin Studio(又名monodroid)构建Android应用。我的问题如下:

在我的活动OnCreate中,我致电

this.RequestWindowFeature(WindowFeatures.ActionBar);
this.RequestWindowFeature(WindowFeatures.ActionModeOverlay);

另外,我将此覆盖添加到Activity:

public override Boolean OnTouchEvent(MotionEvent e)
{
    if (this.ActionBar.IsShowing)
    {
        this.ActionBar.Hide();
    }
    else
    {
        this.ActionBar.Show();
    }

    return base.OnTouchEvent(e);
}

然而,这并不像我期望的那样工作:当我第一次点击活动时,该栏被隐藏。下一个点击显示它,但它甚至在再次撤退之前甚至没有完全滑入视图。而且,似乎" cram"活动的内容,自我添加WindowFeatures.ActionModeOverlay以来不应该这样做。
我错过了什么?

修改 我确信该方法本身仅在每次触摸时触发一次(我记录了一个计数器进行诊断) 另外,我不会在其他任何地方show() / hide()使用ActionBar。

编辑2:确定,但可能搞砸了诊断方法。 :/
添加后

if (e.Action == MotionEventActions.Cancel
    || e.Action == MotionEventActions.Up)
{
    return base.OnTouchEvent(e);
}

它的行为符合预期。

1 个答案:

答案 0 :(得分:2)

当您发布触摸时,Motion Event正在捕捉事件,您需要使用e.Action进一步过滤事件以进行触地和释放事件。我认为down是触发show,而release又是隐藏它