Xamarin Navigation Bar

Автор:

learn.microsoft.com

В Android 4 появилась новая функция системного пользовательского интерфейса – панель навигации, которая обеспечивает управление навигацией на устройствах, не имеющих аппаратных кнопок Домой, Назад и Меню. На следующем снимке экрана показана панель навигации на устройстве Nexus Prime:

Флаги в классе Android.View.View

Доступно несколько новых флагов, управляющих видимостью панели навигации и ее элементов управления, а также видимостью системной панели, которая была введена в Android 3. Флаги определены в классе Android.View.View и перечислены ниже:

Эти флаги могут быть применены к любому представлению в иерархии представлений путем установки свойства SystemUiVisibility. Если у нескольких представлений установлено это свойство, система объединяет их с помощью операции ИЛИ и применяет их до тех пор, пока окно, в котором установлены флаги, сохраняет фокус. При удалении представления все установленные им флаги также будут удалены.

В следующем примере показано простое приложение, в котором нажатие на любую из кнопок изменяет SystemUiVisibility:

Изменение SystemUiVisibility

Код для изменения SystemUiVisibility устанавливает свойство на TextView из обработчика события щелчка каждой кнопки, как показано ниже:

var tv = FindViewById (Resource.Id.systemUiFlagTextView);
var lowProfileButton = FindViewById(Resource.Id.lowProfileButton);
var hideNavButton = FindViewById (Resource.Id.hideNavigation);
var visibleButton = FindViewById (Resource.Id.visibleButton);
 
lowProfileButton.Click += delegate {
   tv.SystemUiVisibility =
       (StatusBarVisibility)View.SystemUiFlagLowProfile;
};
 
hideNavButton.Click += delegate {
   tv.SystemUiVisibility =
      (StatusBarVisibility)View.SystemUiFlagHideNavigation;       
};
 
visibleButton.Click += delegate {
   tv.SystemUiVisibility = (StatusBarVisibility)View.SystemUiFlagVisible;
}

Кроме того, изменение SystemUiVisibility вызывает событие SystemUiVisibilityChange. Как и при установке свойства SystemUiVisibility, обработчик события SystemUiVisibilityChange может быть зарегистрирован для любого представления в иерархии. Например, в приведенном ниже коде для регистрации события используется экземпляр TextView:

tv.SystemUiVisibilityChange +=
 delegate(object sender, View.SystemUiVisibilityChangeEventArgs e) {
       tv.Text = String.Format ("Visibility = {0}", e.Visibility);
 };

Материалы по теме