Aracılığıyla paylaş


Araç Çubuğu Uyumluluğu

Genel bakış

Bu bölümde, Android'in Android 5.0 Lollipop'tan önceki sürümlerinde nasıl kullanılacağı Toolbar açıklanmaktadır. Uygulamanız Android'in Android 5.0'dan önceki sürümlerini desteklemiyorsa bu bölümü atlayabilirsiniz.

Toolbar Android v7 destek kitaplığının bir parçası olduğundan, Android 2.1 (API düzeyi 7) ve üzerini çalıştıran cihazlarda kullanılabilir. Ancak, Android Destek Kitaplığı v7 AppCompat NuGet'in yüklenmesi ve kodun bu kitaplıkta sağlanan uygulamayı kullanması Toolbar için değiştirilmesi gerekir. Bu bölümde bu NuGet'in nasıl yükleneceği ve İkinci Araç Çubuğu Ekleme bölümünden ToolbarFun uygulamasının Lollipop 5.0'dan önceki Android sürümlerinde çalışacak şekilde nasıl değiştirileceği açıklanmaktadır.

Bir uygulamayı Araç Çubuğu'nun AppCompat sürümünü kullanacak şekilde değiştirmek için:

  1. Uygulama için En Düşük ve Hedef Android sürümlerini ayarlayın.

  2. AppCompat NuGet Paketini yükleyin.

  3. Yerleşik Android teması yerine AppCompat teması kullanın.

  4. değiştirerek yerine alt sınıflar olmasını sağlayın MainActivity AppCompatActivity Activity.

Bu adımların her biri aşağıdaki bölümlerde ayrıntılı olarak açıklanmıştır.

En Düşük ve Hedef Android Sürümünü Ayarlama

Uygulamanın Hedef Çerçevesi API Düzeyi 21 veya üzeri olarak ayarlanmalıdır, aksi takdirde uygulama düzgün dağıtılmaz. Uygulamayı dağıtırken 'android' paketindeki 'tileModeX' özniteliği için kaynak tanımlayıcısı bulunamadı gibi bir hata görülüyorsa, bunun nedeni Hedef Çerçeve'nin Android 5.0 (API Düzeyi 21 - Lollipop) veya üzeri olarak ayarlanmamasıdır.

Hedef Çerçeve düzeyini API Düzeyi 21 veya üzeri olarak ayarlayın ve Android API düzeyi proje ayarlarını uygulamanın desteklemesi gereken en düşük Android Sürümüne ayarlayın. Android API düzeylerini ayarlama hakkında daha fazla bilgi için bkz . Android API Düzeylerini Anlama. ToolbarFun Örnekte, En Düşük Android Sürümü KitKat (API Düzeyi 4.4) olarak ayarlanmıştır.

AppCompat NuGet Paketini Yükleme

Ardından, Android Destek Kitaplığı v7 AppCompat paketini projeye ekleyin. Visual Studio'da Başvurular'a sağ tıklayın ve NuGet Paketlerini Yönet... öğesini seçin. Gözat'a tıklayın ve Android Destek Kitaplığı v7 AppCompat'ı arayın. Xamarin.Android.Support.v7.AppCompat'ı seçin ve Yükle'ye tıklayın:

NuGet paketlerini yönetme bölümünde seçilen V7 Appcompat paketinin ekran görüntüsü

Bu NuGet yüklendiğinde, henüz mevcut değilse birkaç NuGet paketi de yüklenir (Xamarin.Android.Support.Animated.Vector.Drawable, Xamarin.Android.Support.v4 ve Xamarin.Android.Support.Vector.Drawable gibi). NuGet paketlerini yükleme hakkında daha fazla bilgi için bkz . İzlenecek yol: Projenize NuGet ekleme.

AppCompat Teması ve Araç Çubuğu Kullanma

AppCompat kitaplığı, AppCompat kitaplığı tarafından desteklenen herhangi bir Android sürümünde kullanılabilecek çeşitli Theme.AppCompat temalarla birlikte gelir. Örnek ToolbarFun uygulama teması, Lollipop'tan önceki Android sürümlerinde bulunmayan uygulamasından Theme.Material.Light.DarkActionBartüretilmiştir. Bu nedenle, ToolbarFun bu tema Theme.AppCompat.Light.DarkActionBarolan AppCompat karşılık gelenini kullanacak şekilde uyarlanmalıdır. Ayrıca, Lollipop'tan önceki Android sürümlerinde kullanılamadığından Toolbar appcompat sürümünü Toolbarkullanmalıyız. Bu nedenle, düzenlerin yerine Toolbarkullanması android.support.v7.widget.Toolbar gerekir.

Düzenleri Güncelleştir

Resources/layout/Main.axml dosyasını düzenleyin ve öğesini aşağıdaki XML ile değiştirinToolbar:

<android.support.v7.widget.Toolbar
    android:id="@+id/edit_toolbar"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorAccent"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

Kaynakları/düzeni/toolbar.xml düzenleyin ve içeriğini aşağıdaki XML ile değiştirin:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>

Değerlerin ?attr artık ön eklenmediğini android: unutmayın (gösterimin ? geçerli temadaki bir kaynağa başvurduğunu hatırlayın). Burada hala kullanılıyor olsaydı ?android:attr Android, AppCompat kitaplığı yerine o anda çalışan platformdan öznitelik değerine başvururdu. Bu örnekte AppCompat kitaplığı tarafından tanımlanan kullanıldığından actionBarSize android: önek bırakılır. Benzer şekilde, @android:style özniteliği AppCompat android:theme kitaplığında bir temaya ayarlı olacak şekilde olarak değiştirilir@style; ThemeOverlay.AppCompat.Dark.ActionBar tema yerine burada ThemeOverlay.Material.Dark.ActionBarkullanılır.

Stili Güncelleştir

Kaynakları/değerleri/styles.xml düzenleyin ve içeriğini aşağıdaki XML ile değiştirin:

<?xml version="1.0" encoding="utf-8" ?>
<resources>
  <style name="MyTheme" parent="MyTheme.Base"> </style>
  <style name="MyTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="colorPrimary">#5A8622</item>
    <item name="colorAccent">#A88F2D</item>
  </style>
</resources>

AppCompat kitaplığını kullandığımız için, bu örnekteki öğe adları ve üst tema artık ön eklenmemiştir android: . Ayrıca, üst tema appcompat sürümü olarak Light.DarkActionBardeğiştirilir.

Menüleri Güncelleştir

AppCompat kitaplığı, Android'in önceki sürümlerini desteklemek için ad alanının özniteliklerini yansıtan özel öznitelikler android: kullanır. Ancak, bazı öznitelikler (etikette <menu> kullanılan öznitelik gibishowAsAction) eski cihazlarda Android çerçevesinde mevcut değildir; showAsAction Android API 11'de kullanıma sunulmuştur ancak Android API 7'de kullanılamaz. Bu nedenle, destek kitaplığı tarafından tanımlanan tüm özniteliklerin ön ekini almak için özel bir ad alanı kullanılmalıdır. Menü kaynak dosyalarında, özniteliğin ön ekini showAsAction oluşturmak için adlı local bir ad alanı tanımlanır.

Kaynakları Düzenle/menü/top_menus.xml ve içeriğini aşağıdaki XML ile değiştirin:

<?xml version="1.0" encoding="utf-8" ?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:local="http://schemas.android.com/apk/res-auto">
  <item
       android:id="@+id/menu_edit"
       android:icon="@mipmap/ic_action_content_create"
       local:showAsAction="ifRoom"
       android:title="Edit" />
  <item
       android:id="@+id/menu_save"
       android:icon="@mipmap/ic_action_content_save"
       local:showAsAction="ifRoom"
       android:title="Save" />
  <item
       android:id="@+id/menu_preferences"
       local:showAsAction="never"
       android:title="Preferences" />
</menu>

Ad local alanı şu satırla eklenir:

xmlns:local="http://schemas.android.com/apk/res-auto">

showAsAction özniteliği, bu ad alanı yerine bu local: ad alanıyla önceden oluşturulmuşandroid:

local:showAsAction="ifRoom"

Benzer şekilde, Kaynaklar/menü/edit_menus.xml düzenleyin ve içeriğini aşağıdaki XML ile değiştirin:

<?xml version="1.0" encoding="utf-8" ?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:local="http://schemas.android.com/apk/res-auto">
  <item
       android:id="@+id/menu_cut"
       android:icon="@mipmap/ic_menu_cut_holo_dark"
       local:showAsAction="ifRoom"
       android:title="Cut" />
  <item
       android:id="@+id/menu_copy"
       android:icon="@mipmap/ic_menu_copy_holo_dark"
       local:showAsAction="ifRoom"
       android:title="Copy" />
  <item
       android:id="@+id/menu_paste"
       android:icon="@mipmap/ic_menu_paste_holo_dark"
       local:showAsAction="ifRoom"
       android:title="Paste" />
</menu>

Bu ad alanı anahtarı, API Düzeyi 11'in önceki Android sürümlerinde özniteliği için showAsAction nasıl destek sağlar? AppCompat NuGet yüklendiğinde özel öznitelik showAsAction ve tüm olası değerleri uygulamaya eklenir.

Alt Sınıf AppCompatActivity

Dönüştürmenin son adımı, öğesinin alt sınıfı olacak şekilde değiştirmektir MainActivity AppCompatActivity. MainActivity.cs düzenleyin ve aşağıdaki using deyimleri ekleyin:

using Android.Support.V7.App;
using Toolbar = Android.Support.V7.Widget.Toolbar;

Bu, uygulamasının AppCompat sürümü Toolbarolduğunu bildirirToolbar. Ardından öğesinin sınıf tanımını MainActivitydeğiştirin:

public class MainActivity : AppCompatActivity

Eylem çubuğunu appcompat sürümüne Toolbarayarlamak için çağrısı SetActionBar yerine öğesini yazın SetSupportActionBar. Bu örnekte başlığı, AppCompat sürümünün Toolbar kullanıldığını belirtmek için de değiştirilir:

SetSupportActionBar (toolbar);
SupportActionBar.Title = "My AppCompat Toolbar";

Son olarak, En Düşük Android düzeyini desteklenecek lolipop öncesi değerle değiştirin (örneğin, API 19).

Uygulamayı derleyin ve Lollipop öncesi bir cihazda veya Android öykünücüsinde çalıştırın. Aşağıdaki ekran görüntüsünde KitKat (API 19) çalıştıran bir Nexus 4'te ToolbarFun'un AppCompat sürümü gösterilmektedir:

Bir KitKat cihazında çalışan uygulamanın tam ekran görüntüsü, her iki Araç Çubuğu da gösterilir

AppCompat kitaplığı kullanıldığında, temaların Android sürümüne göre değiştirilmesi gerekmez; AppCompat kitaplığı desteklenen tüm Android sürümlerinde tutarlı bir kullanıcı deneyimi sağlamayı mümkün kılar.