次の方法で共有


Xamarin.Android ナビゲーション バー

Android 4 では、"ナビゲーション バー" と呼ばれる新しいシステム ユーザー インターフェイス機能が導入されました。これにより、ホーム戻るメニューのハードウェア ボタンがないデバイス上にナビゲーション コントロールが提供されます。 次のスクリーンショットは、Nexus Prime デバイスのナビゲーション バーを示しています。

Android ナビゲーション バーの例

ナビゲーション バーとそのコントロールの表示と、Android 3 で導入されたシステム バーの表示を制御するいくつかの新しいフラグを使用することができます。 次に示すそれらのフラグは、Android.View.View クラス内で定義されています。

  • SystemUiFlagVisible – ナビゲーション バーを表示します。
  • SystemUiFlagLowProfile – ナビゲーション バー内のコントロールを薄暗くします。
  • SystemUiFlagHideNavigation – ナビゲーション バーを非表示にします。

これらのフラグは、SystemUiVisibility プロパティを設定することで、ビュー階層内の任意のビューに適用できます。 複数のビューにこのプロパティが設定されている場合、システムはそれらを OR 操作で組み合わせて、フラグが設定されているウィンドウにフォーカスが保持されている限り、それらを適用します。 ビューを削除すると、設定されていたフラグも削除されます。

次の例は、いずれかのボタンをクリックすると SystemUiVisibility を変更する単純なアプリケーションを示しています。

Visible、Low Profile、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);
  };