В Android 4 появилась новая функция системного пользовательского интерфейса – панель навигации, которая обеспечивает управление навигацией на устройствах, не имеющих аппаратных кнопок Домой, Назад и Меню. На следующем снимке экрана показана панель навигации на устройстве Nexus Prime:
Флаги в классе Android.View.View
Доступно несколько новых флагов, управляющих видимостью панели навигации и ее элементов управления, а также видимостью системной панели, которая была введена в Android 3. Флаги определены в классе Android.View.View и перечислены ниже:
- SystemUiFlagVisible - делает панель навигации видимой.
- SystemUiFlagLowProfile - уменьшает размеры элементов управления на панели навигации.
- SystemUiFlagHideNavigation - скрывает панель навигации.
Эти флаги могут быть применены к любому представлению в иерархии представлений путем установки свойства 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); };