2013-12-05 4 views
1

В настоящее время я пытаюсь создать приложение для Android с Xamarin Studio (aka monodroid). Моя проблема заключается в следующем:

В моей деятельности-х OnCreate я называюActionbar keep hiding

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

Кроме того, я добавил это переопределение к деятельности:

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

    return base.OnTouchEvent(e); 
} 

Это, однако, не работает, как я ожидал это: Когда я впервые нажимаю на Activity, панель скрыта. Следующий щелчок показывает его, но он даже не полностью отображается в поле зрения, прежде чем он снова отступит. Кроме того, он, похоже, «втиснет» содержимое Activity, чего он не должен делать, так как я добавил WindowFeatures.ActionModeOverlay.
Что мне не хватает?

EDIT: Я уверен, что сам метод срабатывает только один раз в контакт (я зарегистрировал счетчик для диагностики).
Кроме того, я не show()/hide() ActionBar где-нибудь еще.

EDIT 2: Я был уверен, но, вероятно, перепутала диагностический подход. :/
После добавления

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

он ведет себя, как ожидалось.

ответ

2

Motion Event ловит событие, когда вы отпускаете прикосновение, вам нужно отфильтровать событие, используя e.Action для приземления и выпуска событий. Я думаю, что это запускает шоу, и релиз скрывает его снова.

+0

Я не уверен, что мы имеем одинаковую вещь. В панели действий нет __not__, что, например, устройства Nexus вместо аппаратных кнопок. Это то, что находится под заголовком (в приложениях, которые используют голографические темы). –

+0

О, да, да, я всегда получаю эти путаные извинения – Paperwaste

+0

Бывает! Получили ли какие-либо советы по другому шагу? –