Aracılığıyla paylaş


Xamarin.Android Gezinti Çubuğu

Android 4, Giriş, Geri ve Menü için donanım düğmeleri içermeyen cihazlarda gezinti denetimleri sağlayan Gezinti Çubuğu adlı yeni bir sistem kullanıcı arabirimi özelliği kullanıma sunulmuştur. Aşağıdaki ekran görüntüsünde Bir Nexus Prime cihazından Gezinti Çubuğu gösterilmektedir:

Android gezinti çubuğu örneği

Gezinti Çubuğu ve denetimlerinin görünürlüğünü ve Android 3'te kullanıma sunulan Sistem Çubuğu'nun görünürlüğünü denetleyebilen birkaç yeni bayrak mevcuttur. Bayraklar sınıfında tanımlanır Android.View.View ve aşağıda listelenir:

  • SystemUiFlagVisible – Gezinti Çubuğunu görünür hale getirir.
  • SystemUiFlagLowProfile – Gezinti Çubuğu'ndaki denetimleri soluk gösterir.
  • SystemUiFlagHideNavigation – Gezinti Çubuğunu gizler.

Bu bayraklar, özelliği ayarlanarak görünüm hiyerarşisindeki herhangi bir görünüme SystemUiVisibility uygulanabilir. Bu özellik kümesi birden çok görünüme sahipse, sistem bunları bir OR işlemiyle birleştirir ve bayrakların ayarlandığı pencere odağı koruduğu sürece bunları uygular. Bir görünümü kaldırdığınızda, ayarlandığı tüm bayraklar da kaldırılır.

Aşağıdaki örnekte, düğmelerden herhangi birine tıklanmasıyla öğesinin değiştirildiği basit bir uygulama gösterilmektedir SystemUiVisibility:

Görünür, Düşük Profil ve Gizli SystemUiVisibility'i gösteren ekran görüntüleri

değiştirme SystemUiVisibility kodu, aşağıda gösterildiği gibi her düğmenin tıklama olay işleyicisinden bir TextView üzerindeki özelliğini ayarlar:

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

Ayrıca, bir SystemUiVisibility değişiklik bir SystemUiVisibilityChange olayı tetikler. Özelliği ayarlamak SystemUiVisibility gibi, olay işleyicisi de hiyerarşideki SystemUiVisibilityChange herhangi bir görünüm için kaydedilebilir. Örneğin, aşağıdaki kod olayına kaydolmak için örneğini kullanır TextView :

tv.SystemUiVisibilityChange +=
  delegate(object sender, View.SystemUiVisibilityChangeEventArgs e) {
        tv.Text = String.Format ("Visibility = {0}", e.Visibility);
  };