Xamarin.Android 导航栏
Android 4 引入了名为导航栏的新系统用户界面功能,该功能在不包含主页、后退和菜单的硬件按钮的设备上提供导航控件。 以下屏幕截图显示了 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);
};