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ü.
Kullanıcı simgeye veya menü öğesine dokunduğunda widget, araç çubuğunu dolduracak şekilde genişleyerek etkileşimde bulunabilirsiniz.
İş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.