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);
};