Aracılığıyla paylaş


Xamarin.Android için ActionBar

kullanırken TabActivity, Android 4.0 çerçevesine karşı çalıştırıldığında sekme simgelerini oluşturma kodunun hiçbir etkisi yoktur. İşlevsel olarak Android'in 2.3 öncesi sürümlerinde olduğu gibi çalışsa da sınıfın TabActivity kendisi 4.0 sürümünde kullanım dışı bırakılmıştır. Bundan sonra ele alacağımız Eylem Çubuğu'nu kullanan sekmeli bir arabirim oluşturmanın yeni bir yolu kullanıma sunulmuştur.

Eylem Çubuğu Sekmeleri

Eylem Çubuğu, Android 4.0'da sekmeli arabirimler ekleme desteği içerir. Aşağıdaki ekran görüntüsünde böyle bir arabirim örneği gösterilmektedir.

Öykünücüde çalışan uygulamanın ekran görüntüsü; iki sekme gösterilir

Eylem Çubuğu'nda sekmeler oluşturmak için önce özelliğini sekmeleri destekleyecek şekilde ayarlamamız NavigationMode gerekir. Android 4'te, Etkinlik sınıfında bir ActionBar özellik bulunur ve bunu şu şekilde ayarlamak NavigationMode için kullanabiliriz:

this.ActionBar.NavigationMode = ActionBarNavigationMode.Tabs;

Bu işlem tamamlandıktan sonra, Eylem Çubuğu'nda NewTab yöntemini çağırarak bir sekme oluşturabiliriz. Bu sekme örneğiyle, sekmenin SetText etiket metnini ve simgesini ayarlamak için ve SetIcon yöntemlerini çağırabiliriz; bu çağrılar aşağıda gösterilen kodda sırayla yapılır:

var tab = this.ActionBar.NewTab ();
tab.SetText (tabText);
tab.SetIcon (Resource.Drawable.ic_tab_white);

Ancak sekmeyi ekleyebilmek için önce olayı işlememiz TabSelected gerekir. Bu işleyicide, sekmenin içeriğini oluşturabiliriz. Eylem Çubuğu sekmeleri, bir Etkinlikteki kullanıcı arabiriminin bir bölümünü temsil eden sınıflar olan Parçalar ile çalışacak şekilde tasarlanmıştır. Bu örnekte, Parçanın görünümü, alt sınıfımızda Fragment şu şekilde şişirdiğimiz tek TextViewbir içerir:

class SampleTabFragment: Fragment
{           
    public override View OnCreateView (LayoutInflater inflater,
        ViewGroup container, Bundle savedInstanceState)
    {
        base.OnCreateView (inflater, container, savedInstanceState);

        var view = inflater.Inflate (
            Resource.Layout.Tab, container, false);

        var sampleTextView =
            view.FindViewById<TextView> (Resource.Id.sampleTextView);            
        sampleTextView.Text = "sample fragment text";

        return view;
    }
}

olayda TabSelected geçirilen olay bağımsız değişkeni, aşağıda gösterildiği gibi parça eklemek için kullanabileceğimiz bir FragmentTransaction özellik içeren türündedirTabEventArgs:

tab.TabSelected += delegate(object sender, ActionBar.TabEventArgs e) {             
    e.FragmentTransaction.Add (Resource.Id.fragmentContainer,
        new SampleTabFragment ());
};

Son olarak, bu kodda gösterildiği gibi yöntemini çağırarak sekmeyi Eylem Çubuğu'na AddTab ekleyebiliriz:

this.ActionBar.AddTab (tab);

Tam örnek için bu belgenin örnek kodundaki HelloTabsICS projesine bakın.

ShareActionProvider

sınıfı, ShareActionProvider bir paylaşım eyleminin Eylem Çubuğu'ndan gerçekleşmesini sağlar. Paylaşım Amacını işleyebilen uygulamaların listesiyle bir eylem görünümü oluşturma işlemini üstlenir ve daha sonra Eylem Çubuğu'ndan bunlara kolay erişim için daha önce kullanılan uygulamaların geçmişini tutar. Bu, uygulamaların Android genelinde tutarlı bir kullanıcı deneyimi aracılığıyla veri paylaşmasına olanak tanır.

Görüntü Paylaşımı Örneği

Örneğin, aşağıda, bir görüntüyü paylaşmak için menü öğesini içeren eylem çubuğunun ekran görüntüsü verilmiştir. Kullanıcı Eylem Çubuğu'nda menü öğesine dokunduğunda, ShareActionProvider uygulaması ile ShareActionProviderilişkilendirilmiş bir Amacı işleyecek şekilde yükler. Bu örnekte, mesajlaşma uygulaması daha önce kullanılmıştır, bu nedenle Eylem Çubuğu'nda sunulur.

Eylem Çubuğu'ndaki mesajlaşma uygulaması simgesinin ekran görüntüsü

Kullanıcı Eylem Çubuğu'ndaki öğeye tıkladığında, paylaşılan görüntüyü içeren mesajlaşma uygulaması aşağıda gösterildiği gibi başlatılır:

Maymun resmi görüntüleyen mesajlaşma uygulamasının ekran görüntüsü

Sağlayıcı Sınıfı eylemini belirtme

öğesini kullanmak ShareActionProvideriçin, Eylem Çubuğu menüsünün android:actionProviderClass XML'deki bir menü öğesinde özniteliğini aşağıdaki gibi ayarlayın:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:id="@+id/shareMenuItem"
      android:showAsAction="always"
      android:title="@string/sharePicture"
      android:actionProviderClass="android.widget.ShareActionProvider" />
</menu>

Menüyü Şişirme

Menüyü şişirmek için Etkinlik alt sınıfında geçersiz kılacağız OnCreateOptionsMenu . Menüye bir başvurumuz olduğunda, menü öğesinin özelliğinden ActionProvider öğesini alabilir ShareActionProvider ve aşağıda gösterildiği gibi 'nin Amacını ayarlamak ShareActionProvideriçin SetShareIntent yöntemini kullanabiliriz:

public override bool OnCreateOptionsMenu (IMenu menu)
{
    MenuInflater.Inflate (Resource.Menu.ActionBarMenu, menu);       

    var shareMenuItem = menu.FindItem (Resource.Id.shareMenuItem);           
    var shareActionProvider =
       (ShareActionProvider)shareMenuItem.ActionProvider;
    shareActionProvider.SetShareIntent (CreateIntent ());
}

Amaç Oluşturma

, ShareActionProvider uygun Etkinliği başlatmak için SetShareIntent yukarıdaki kodda yöntemine geçirilen Amacı kullanır. Bu durumda, aşağıdaki kodu kullanarak görüntü göndermek için bir Amaç oluştururuz:

Intent CreateIntent ()
{  
    var sendPictureIntent = new Intent (Intent.ActionSend);
    sendPictureIntent.SetType ("image/*");
    var uri = Android.Net.Uri.FromFile (GetFileStreamPath ("monkey.png"));          
    sendPictureIntent.PutExtra (Intent.ExtraStream, uri);
    return sendPictureIntent;
}

Yukarıdaki kod örneğindeki görüntü, uygulamaya bir varlık olarak eklenir ve Etkinlik oluşturulduğunda genel olarak erişilebilen bir konuma kopyalanır, bu nedenle mesajlaşma uygulaması gibi diğer uygulamalar tarafından erişilebilir hale gelir. Bu makaleye eşlik eden örnek kod, kullanımını gösteren bu örneğin tam kaynağını içerir.