Поделиться через


Панель навигации Xamarin.Android

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

Пример панели навигации Android

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

  • SystemUiFlagVisible — делает панель навигации видимой.
  • SystemUiFlagLowProfile — вытащивает элементы управления на панели навигации.
  • SystemUiFlagHideNavigation — скрывает панель навигации.

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

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

Снимок экрана: видимый, низкий профиль и скрытая 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);
  };