Панель навигации Xamarin.Android
Android 4 представила новую функцию пользовательского интерфейса системы под названием панель навигации, которая предоставляет элементы управления навигацией на устройствах, которые не включают аппаратные кнопки для home, Back и Menu. На следующем снимках экрана показана панель навигации с устройства Nexus Prime:
Доступны несколько новых флагов, которые контролируют видимость панели навигации и ее элементов управления, а также видимость системной панели, появившиеся в Android 3. Флаги определены в Android.View.View
классе и перечислены ниже.
SystemUiFlagVisible
— делает панель навигации видимой.SystemUiFlagLowProfile
— вытащивает элементы управления на панели навигации.SystemUiFlagHideNavigation
— скрывает панель навигации.
Эти флаги можно применить к любому представлению в иерархии представлений SystemUiVisibility
, задав свойство. Если несколько представлений имеют этот набор свойств, система объединяет их с операцией OR и применяет их до тех пор, пока окно, в котором установлены флаги, сохраняет фокус. При удалении представления все установленные флаги также будут удалены.
В следующем примере показано простое приложение, в котором при нажатии любой из кнопок изменяется:SystemUiVisibility
Код для изменения SystemUiVisibility
свойства на TextView
обработчике событий нажатия каждой кнопки, как показано ниже:
var tv = FindViewById<TextView> (Resource.Id.systemUiFlagTextView);
var lowProfileButton = FindViewById<Button>(Resource.Id.lowProfileButton);
var hideNavButton = FindViewById<Button> (Resource.Id.hideNavigation);
var visibleButton = FindViewById<Button> (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);
};