İşlem görünümlerini ve işlem sağlayıcıları kullanma

AndroidX kitaplığının Toolbar, kullanıcıların uygulamanızla etkileşim kurması için farklı yollar sunar. İşlem ekleme ve işleme: Bir düğme veya menü öğesi olabilecek bir işlem tanımlayın. Bu dokümanda, açıklama iki bileşene sahiptir:

  • İşlem görünümü, uygulama çubuğu içinde zengin işlevler sağlayan bir işlemdir. Örneğin, Örneğin, bir arama işlemi görünümü, kullanıcının ve parçaları değiştirmek için kullanılır.
  • İşlem sağlayıcı, kendi özelleştirilmiş düzenine sahip bir işlemdir. Başlangıçta eylem Bir düğme veya menü öğesi olarak görünür; Kullanıcı işleme dokunduğunda, işlem sağlayıcı bunu kontrol eder sizin tanımladığınız şekilde, eylemin davranışını tanımlayın. Örneğin, işlem sağlayıcı dokunun.

AndroidX, birkaç özel işlem görünümü ve işlem sağlayıcı widget'ı sağlar. Örneğin, SearchView widget'ı arama sorguları girmek için bir işlem görünümü uygular. İlgili içeriği oluşturmak için kullanılan ShareActionProvider. widget, diğer uygulamalarla bilgi paylaşmak için bir işlem sağlayıcı uygular. Ayrıca Ürün İş Listesi’ndeki kendi işlem görüntüleme ve işlem sağlayıcılarınızı görebilirsiniz.

İşlem görünümü ekleme

İşlem görünümü eklemek için <item> öğesini (bkz. araç çubuğunun menü kaynağında) İşlem ekleme ve işleme. Aşağıdaki özelliklerden birini <item> öğe:

  • actionViewClass: İşlemi uygulayan widget'ın sınıfı
  • actionLayout: İşlemin bileşenlerini açıklayan bir düzen kaynağı

showAsAction özelliğini "ifRoom|collapseActionView" olarak ayarlayın veya "never|collapseActionView". collapseActionView işareti, kullanıcı etkileşimde bulunmadığında widget'ı görüntüler. Widget, uygulama çubuğundaysa uygulama widget'ı simge olarak görüntüler. Widget, taşma menüsündeyse uygulama widget'ı görüntüler bir menü seçeneği olarak görebiliriz. Kullanıcı işlem görünümüyle etkileşimde bulunduğunda, görünüm genişleyerek uygulama çubuğunu doldurur.

Örneğin, aşağıdaki kod uygulama çubuğuna bir SearchView widget'ı ekler:

<item android:id="@+id/action_search"
     android:title="@string/action_search"
     android:icon="@drawable/ic_search"
     app:showAsAction="ifRoom|collapseActionView"
     app:actionViewClass="androidx.appcompat.widget.SearchView" />

Kullanıcı widget'la etkileşimde bulunmuyorsa uygulama, widget'ı belirtilen simge olarak görüntüler android:icon tarafından. Uygulama çubuğunda yer yoksa uygulama, işlemi taşma menüsü.

Başında ve sonunda simgeler bulunan bir arama çubuğunu gösteren resim.
Şekil 1. Başında ve sonunda simgeler bulunan arama çubuğu.

Kullanıcı simgeye veya menü öğesine dokunduğunda widget, araç çubuğunu dolduracak şekilde genişleyerek etkileşimde bulunabilirsiniz.

Arama çubuğuna odaklanıldığında arama görünümünün açıldığını gösteren resim.
Şekil 2. Arama çubuğuna odaklanıldığında arama görünümü açılır.

İşlemi yapılandırmanız gerekirse, bunu etkinliğinizin onCreateOptionsMenu(). geri arama. İşlem görünümünün nesne referansını, getActionView(). yöntemidir. Örneğin, aşağıdaki kod SearchView için nesne referansını alır widget'ını önceki kod örneğinde görebilirsiniz:

Kotlin

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    menuInflater.inflate(R.menu.main_activity_actions, menu)

    val searchItem = menu?.findItem(R.id.action_search)
    val searchView = searchItem?.actionView as SearchView

    // Configure the search info and add any event listeners.

    return super.onCreateOptionsMenu(menu)
}

Java

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main_activity_actions, menu);

    MenuItem searchItem = menu.findItem(R.id.action_search);
    SearchView searchView =
            (SearchView) searchItem.getActionView();

    // Configure the search info and add any event listeners.

    return super.onCreateOptionsMenu(menu);
}

İşlem görünümü genişletmesine yanıt verme

İşlemin <item> öğesinde collapseActionView işareti varsa Uygulama, kullanıcı işlem görünümüyle etkileşime girene kadar işlem görünümünü bir simge olarak görüntüler. Kullanıcı simgesine dokunduğunda onOptionsItemSelected(). işlem görünümünü genişletir. Etkinlik alt sınıfınız onOptionsItemSelected() yöntemi, geçersiz kılma yönteminizin çağrı yapması gerekir Üst sınıfın işlem görünümünü genişletebilmesi için super.onOptionsItemSelected().

İşlem genişletildiğinde veya daraltıldığında bir şey yapmak isterseniz, aşağıdakileri gerçekleştirecek bir sınıf tanımlayabilirsiniz: implements MenuItem.OnActionExpandListener, ve ilgili sınıfın bir üyesini setOnActionExpandListener(). Örneğin, etkinliği bir işlem görünümünün genişletilip genişletilmediğine göre güncellemek isteyebilirsiniz. daraltıldı. Aşağıdaki kod snippet'inde bir işleyicinin nasıl tanımlanacağı ve iletileceği gösterilmektedir:

Kotlin

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    menuInflater.inflate(R.menu.options, menu)

    // Define the listener.
    val expandListener = object : MenuItem.OnActionExpandListener {
        override fun onMenuItemActionCollapse(item: MenuItem): Boolean {
            // Do something when the action item collapses.
            return true // Return true to collapse the action view.
        }

        override fun onMenuItemActionExpand(item: MenuItem): Boolean {
            // Do something when it expands.
            return true // Return true to expand the action view.
        }
    }

    // Get the MenuItem for the action item.
    val actionMenuItem = menu?.findItem(R.id.myActionItem)

    // Assign the listener to that action item.
    actionMenuItem?.setOnActionExpandListener(expandListener)

    // For anything else you have to do when creating the options menu,
    // do the following:

    return true
}

Java

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.options, menu);

    // Define the listener.
    OnActionExpandListener expandListener = new OnActionExpandListener() {
        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {
            // Do something when the action item collapses.
            return true;  // Return true to collapse action view.
        }

        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            // Do something when it expands.
            return true;  // Return true to expand the action view.
        }
    };

    // Get the MenuItem for the action item.
    MenuItem actionMenuItem = menu.findItem(R.id.myActionItem);

    // Assign the listener to that action item.
    MenuItemCompat.setOnActionExpandListener(actionMenuItem, expandListener);

    // For anything else you have to do when creating the options menu,
    // do the following:

    return true;
}

İşlem sağlayıcı ekle

Bir işlem sağlayıcı tanımlamak için araç çubuğunun menüsünde <item> öğesi oluşturun İşlem ekleme ve işleme bölümünde açıklandığı şekilde bir kaynağa bakın. Bir actionProviderClass özelliğini kullanabilir ve eğitim için tam nitelikli sınıf adına işlem sağlayıcı sınıfı.

Örneğin, aşağıdaki kod bir widget olan ShareActionProvider öğesini tanımlar uygulamanızın diğer uygulamalarla veri paylaşmasına olanak tanıyan AndroidX kitaplığında tanımlanmıştır:

<item android:id="@+id/action_share"
    android:title="@string/share"
    app:showAsAction="ifRoom"
    app:actionProviderClass="androidx.appcompat.widget.ShareActionProvider"/>

Bu durumda, widget için bir simge bildirmeniz gerekmez, çünkü ShareActionProvider kendi grafiklerini sağlar. Özel bir işlem kullanıyorsanız bir simge tanımlayın.

Ek kaynaklar

  • Görüntüleyin ShareActionProvider. üst uygulama çubuğunuza bir paylaşım işlemi ekleme örneği.
  • Görüntüleyin Şunun için ActionProvider: özel işlem sağlayıcı oluşturma hakkında daha fazla bilgi edinin.