AndroidX kitaplığının Toolbar
özelliği, kullanıcıların uygulamanızla etkileşimde bulunması için farklı yollar sağlar.
İşlem ekleme ve işleme, bir düğme veya menü öğesi olabilecek bir işlemin nasıl tanımlanacağını açıklar. Bu belgede iki çok yönlü bileşenin nasıl ekleneceği açıklanmaktadır:
- İşlem görünümü, uygulama çubuğunda zengin işlevler sağlayan bir işlemdir. Örneğin, arama işlemi görünümü, kullanıcının etkinlikleri veya parçaları değiştirmek zorunda kalmadan uygulama çubuğuna arama metnini yazmasını sağlar.
- İşlem sağlayıcı, kendi özelleştirilmiş düzeni olan bir işlemdir. İşlem başlangıçta bir düğme veya menü öğesi olarak görünür. Kullanıcı işleme dokunduğunda işlem sağlayıcısı, işlemin davranışını sizin tanımladığınız şekilde kontrol eder. Örneğin, işlem sağlayıcı bir menü görüntüleyerek dokunmaya yanıt verebilir.
AndroidX, çeşitli özel işlem görünümü ve işlem sağlayıcı widget'ları sağlar. Örneğin, SearchView
widget'ı arama sorgularını girmek için bir işlem görünümü uygular. ShareActionProvider
Widget'ı, diğer uygulamalarla bilgi paylaşmak için bir işlem sağlayıcı uygular. Kendi işlem görünümlerinizi
ve işlem sağlayıcılarınızı da tanımlayabilirsiniz.
İşlem görünümü ekleme
İşlem görünümü eklemek için İşlem ekleme ve işleme bölümünde açıklandığı gibi araç çubuğunun menü kaynağında bir <item>
öğesi oluşturun. <item>
öğesine aşağıdaki özelliklerden birini ekleyin:
actionViewClass
: işlemi uygulayan widget sınıfıactionLayout
: İşlemin bileşenlerini açıklayan bir düzen kaynağı
showAsAction
özelliğini "ifRoom|collapseActionView"
veya "never|collapseActionView"
olarak ayarlayın. collapseActionView
işareti, kullanıcı etkileşimde bulunmadığında widget'ın nasıl görüntüleneceğini belirtir. Widget, uygulama çubuğundaysa uygulama,
Widget'ı bir simge olarak görüntüler. Widget, taşma menüsündeyse uygulama widget'ı menü öğesi olarak görüntüler. Kullanıcı, işlem görünümüyle etkileşime geçtiğinde görünüm, uygulama çubuğunu dolduracak şekilde genişler.
Ö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'ı android:icon
tarafından belirtilen simgeyle görüntüler. Uygulama çubuğunda yer yoksa uygulama, işlemi taşma menüsüne ekler.
Kullanıcı simgeye veya menü öğesine dokunduğunda widget genişleyerek araç çubuğunu doldurarak kullanıcının etkileşimde bulunmasına olanak tanır.
İşlemi yapılandırmanız gerekiyorsa etkinliğinizin onCreateOptionsMenu()
geri çağırmasında yapın. getActionView()
yöntemini çağırarak işlem görünümünün nesne referansını alabilirsiniz. Örneğin, aşağıdaki kod, önceki kod örneğinde tanımlanan SearchView
widget'ının nesne referansını alır:
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şim kurana kadar işlem görünümünü bir simge olarak görüntüler. Kullanıcı simgeye dokunduğunda, onOptionsItemSelected()
öğesinin yerleşik işleyicisi işlem görünümünü genişletir. Etkinlik alt sınıfınız onOptionsItemSelected()
yöntemini geçersiz kılarsa üst sınıfın işlem görünümünü genişletebilmesi için geçersiz kılma yönteminizin super.onOptionsItemSelected()
yöntemini çağırması gerekir.
İşlem genişletildiğinde veya daraltıldığında bir şey yapmak istiyorsanız MenuItem.OnActionExpandListener
özelliğini uygulayan bir sınıf tanımlayabilir ve bu sınıfın bir üyesini setOnActionExpandListener()
öğesine aktarabilirsiniz.
Örneğin, işlem görünümünün genişletilmiş veya daraltılmış olmasına bağlı olarak etkinliği güncellemek isteyebilirsiniz. Aşağıdaki kod snippet'i, bir işleyicinin nasıl tanımlanıp iletileceğini gösterir:
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
İşlem sağlayıcı bildirmek için İşlem ekleme ve işleme bölümünde açıklandığı gibi araç çubuğunun menü kaynağında bir <item>
öğesi oluşturun. Bir actionProviderClass
özelliği ekleyin ve bunu işlem sağlayıcı sınıfı için tam sınıf adı olarak ayarlayın.
Örneğin, aşağıdaki kod, AndroidX kitaplığında tanımlanan ve uygulamanızın diğer uygulamalarla veri paylaşmasına olanak tanıyan bir widget olan ShareActionProvider
özelliğini tanımlar:
<item android:id="@+id/action_share" android:title="@string/share" app:showAsAction="ifRoom" app:actionProviderClass="androidx.appcompat.widget.ShareActionProvider"/>
Bu durumda, ShareActionProvider
kendi grafiklerini sağladığından widget için simge beyan edilmesi gerekmez. Özel bir işlem kullanıyorsanız
bir simge belirtin.
Ek kaynaklar
- Üst uygulama çubuğunuza paylaşma işlemi eklemeyle ilgili bir örnek için bkz.
ShareActionProvider
. - Özel işlem sağlayıcı oluşturma hakkında daha fazla bilgi için
ActionProvider
adresine bakın.