AndroidX kitaplığının Toolbar
, kullanıcıların uygulamanızla etkileşime geçmesi için farklı yöntemler sunar. İşlem ekleme ve işlemleri işleme bölümünde, düğme veya menü öğesi olabilecek bir işlem'in nasıl tanımlanacağı açıklanmaktadır. Bu dokümanda, çok yönlü iki bileşenin nasıl ekleneceği açıklanmaktadır:
- İşlem görünümü, uygulama çubuğunda zengin işlevler sunan 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 arama metnini uygulama çubuğuna yazmasına olanak tanır.
- İşlem sağlayıcı, kendi özelleştirilmiş düzenine sahip 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ı, işlemin davranışını tanımladığınız şekilde kontrol eder. Örneğin, işlem sağlayıcı bir dokunmaya yanıt olarak bir menü gösterebilir.
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ı girmek için bir işlem görünümü uygular. ShareActionProvider
widget'ı, bilgileri diğer uygulamalarla 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
: İşlemi uygulayan widget'ın 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ı widget ile etkileşimde bulunmadığında widget'ın nasıl gösterileceğini belirtir. Widget uygulama çubuğundaysa uygulama, widget'ı simge olarak gösterir. Widget taşma menüsündeyse uygulama, widget'ı menü öğesi olarak gösterir. 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 simge olarak gösterir. Uygulama çubuğunda yer yoksa uygulama, işlemi taşma menüsüne ekler.
Kullanıcı simgeye veya menü öğesine dokunduğunda widget, araç çubuğunu dolduracak şekilde genişler ve kullanıcının widget'la etkileşime geçmesine olanak tanır.
İşlemi yapılandırmanız gerekiyorsa bunu etkinliğinizin onCreateOptionsMenu()
callback'inde yapın. getActionView()
metodunu ç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şime geçene kadar işlem görünümünü simge olarak gösterir. Kullanıcı simgeye dokunduğunda, onOptionsItemSelected()
için yerleşik işleyici işlem görünümünü genişletir. Etkinlik alt sınıfınız onOptionsItemSelected()
yöntemini geçersiz kılıyorsa ü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 işlem yapmak istiyorsanız MenuItem.OnActionExpandListener
'ü uygulayan bir sınıf tanımlayabilir ve bu sınıfın bir üyesini setOnActionExpandListener()
'a iletebilirsiniz.
Örneğin, bir işlem görünümünün genişletilip genişletilmediğine göre etkinliği güncellemek isteyebilirsiniz. Aşağıdaki kod snippet'inde, bir dinleyicinin 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ı ekleme
İşlem sağlayıcıyı beyan etmek 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 bu özelliği, işlem sağlayıcı sınıfının tam nitelikli sınıf adına ayarlayın.
Örneğin, aşağıdaki kodda bir ShareActionProvider
tanımlanmaktadır. ShareActionProvider
, AndroidX kitaplığında tanımlanan ve uygulamanızın diğer uygulamalarla veri paylaşmasına olanak tanıyan bir widget'tır:
<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 bir simge belirtmeniz gerekmez. Özel bir işlem kullanıyorsanız bir simge tanımlayın.
Ek kaynaklar
- Üst uygulama çubuğunuza paylaşım işlemi ekleme örneği için
ShareActionProvider
buraya bakın. - Özel işlem sağlayıcı oluşturma hakkında daha fazla bilgi için
ActionProvider
bölümüne bakın.