Library AndroidX
Toolbar
menyediakan
cara yang berbeda bagi pengguna untuk berinteraksi dengan aplikasi Anda.
Menambahkan dan menangani tindakan menjelaskan cara
menentukan tindakan, yang dapat berupa tombol atau item menu. Dokumen ini menjelaskan cara menambahkan
dua komponen serbaguna:
- Tampilan tindakan adalah tindakan yang menyediakan beragam fungsi di dalam panel aplikasi. Sebagai Misalnya, tampilan tindakan penelusuran memungkinkan pengguna mengetik teks penelusuran di panel aplikasi tanpa perlu untuk mengubah aktivitas atau fragmen.
- Penyedia tindakan adalah tindakan dengan tata letak yang disesuaikan sendiri. Tindakan di awal muncul sebagai tombol atau item menu; saat pengguna mengetuk tindakan, penyedia tindakan akan mengontrol perilaku tindakan dengan cara apa pun yang Anda tentukan. Misalnya, penyedia tindakan mungkin merespons ketuk dengan menampilkan menu.
AndroidX menyediakan beberapa tampilan tindakan khusus dan widget penyedia tindakan. Misalnya,
Widget SearchView
menerapkan tampilan tindakan untuk memasukkan kueri penelusuran. Tujuan
ShareActionProvider
menerapkan penyedia tindakan untuk berbagi informasi dengan aplikasi lain. Anda juga bisa menentukan
tampilan tindakan dan penyedia tindakan Anda sendiri.
Menambahkan tampilan tindakan
Untuk menambahkan tampilan tindakan, buat
<item>
dalam sumber daya menu toolbar, seperti dijelaskan dalam
Menambahkan dan menangani tindakan. Tambahkan salah satu atribut berikut ke
Elemen <item>
:
actionViewClass
: class widget yang menerapkan tindakanactionLayout
: resource tata letak yang menjelaskan komponen tindakan
Tetapkan atribut showAsAction
ke "ifRoom|collapseActionView"
atau
"never|collapseActionView"
. Flag collapseActionView
menunjukkan cara
menampilkan widget saat pengguna tidak berinteraksi dengannya. Jika widget ada di panel aplikasi, aplikasi
menampilkan widget sebagai ikon. Jika widget ada di menu tambahan, aplikasi akan menampilkan widget
sebagai item menu. Saat pengguna berinteraksi dengan tampilan tindakan, tampilan akan diperluas untuk mengisi panel aplikasi.
Misalnya, kode berikut menambahkan widget SearchView
ke panel aplikasi:
<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" />
Jika pengguna tidak berinteraksi dengan widget, aplikasi akan menampilkan widget sebagai ikon yang ditentukan
paling lambat android:icon
. Jika tidak ada ruang di bilah aplikasi, aplikasi akan menambahkan tindakan ke
menu tambahan.
Ketika pengguna mengetuk ikon atau item menu, widget akan meluas untuk mengisi {i>toolbar<i}, memungkinkan berinteraksi dengannya.
Jika Anda perlu mengonfigurasi tindakan, lakukan dalam metode
onCreateOptionsMenu()
. Anda bisa mendapatkan referensi objek tampilan tindakan dengan memanggil metode
getActionView()
. Misalnya, kode berikut mendapatkan referensi objek untuk SearchView
yang ditentukan dalam contoh kode sebelumnya:
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); }
Merespons perluasan tampilan tindakan
Jika elemen <item>
tindakan memiliki flag collapseActionView
, elemen
aplikasi menampilkan tampilan tindakan sebagai ikon hingga pengguna berinteraksi dengan tampilan tindakan. Saat pengguna
mengetuk ikon, pengendali bawaan untuk
onOptionsItemSelected()
memperluas tampilan tindakan. Jika subclass aktivitas Anda mengganti
Metode onOptionsItemSelected()
, metode penggantian Anda harus memanggil
super.onOptionsItemSelected()
sehingga superclass dapat memperluas tampilan tindakan.
Jika ingin melakukan sesuatu saat tindakan diperluas atau diciutkan, Anda dapat menentukan kelas yang
implements
MenuItem.OnActionExpandListener
,
dan teruskan anggota class tersebut untuk
setOnActionExpandListener()
.
Misalnya, Anda mungkin ingin memperbarui aktivitas berdasarkan apakah tampilan tindakan diperluas atau
diciutkan. Cuplikan kode berikut menunjukkan cara menentukan dan meneruskan pemroses:
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; }
Menambahkan penyedia tindakan
Untuk mendeklarasikan penyedia tindakan, buat elemen <item>
di menu toolbar
resource, seperti yang dijelaskan dalam Menambahkan dan menangani tindakan. Tambahkan
atribut actionProviderClass
, dan tetapkan ke nama class yang sepenuhnya memenuhi syarat untuk
penyedia tindakan.
Misalnya, kode berikut mendeklarasikan ShareActionProvider
, yang merupakan widget
didefinisikan di library AndroidX yang memungkinkan aplikasi Anda berbagi data dengan aplikasi lain:
<item android:id="@+id/action_share" android:title="@string/share" app:showAsAction="ifRoom" app:actionProviderClass="androidx.appcompat.widget.ShareActionProvider"/>
Dalam hal ini, tidak perlu mendeklarasikan ikon untuk widget, karena
ShareActionProvider
memberikan grafisnya sendiri. Jika menggunakan tindakan kustom,
mendeklarasikan ikon.
Referensi lainnya
- Lihat
ShareActionProvider
sebagai contoh penambahan tindakan berbagi ke panel aplikasi atas Anda. - Lihat
ActionProvider
untuk informasi selengkapnya tentang membuat penyedia tindakan kustom.