Xamarin.Android 导航栏

Android 4 引入了名为导航栏的新系统用户界面功能,该功能在不包含主页后退菜单的硬件按钮的设备上提供导航控件。 以下屏幕截图显示了 Nexus Prime 设备的导航栏:

Example of an Android navigation bar

有几个新标志可用于控制导航栏及其控件的可见性,以及 Android 3 中引入的系统栏的可见性。 这些标志在Android.View.View类中定义,在下面列出:

  • SystemUiFlagVisible 使导航栏可见。
  • SystemUiFlagLowProfile 在导航栏中调暗控件。
  • SystemUiFlagHideNavigation 隐藏导航栏。

可以设置SystemUiVisibility属性以将这些标志应用于视图层次结构中的任何视图。 如果多个视图设置了此属性,则系统会将它们与 OR 操作组合在一起,并应用它们,前提是设置标志的窗口保留焦点。 删除视图时,还将删除它设置的任何标志。

以下示例演示了简单的应用程序,其中点击任一按钮都会更改SystemUiVisibility

Screenshots demonstrating Visible, Low Profile, and Hidden 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);
  };