Saya ingin semua item menu yang tidak masuk ke dalam ActionBar masuk ke menu overflow (item yang dicapai dari Action Bar bukan tombol menu) bahkan pada perangkat yang melakukan memiliki tombol Menu . Ini tampaknya jauh lebih intuitif bagi pengguna daripada melemparkan mereka ke daftar menu terpisah yang mengharuskan pengguna untuk beralih dari interaksi sentuh (layar) ke interaksi berbasis tombol hanya karena tata letak ActionBar tidak dapat memuatnya di bar.
Pada emulator saya dapat mengatur nilai "Hardware Back / Home Keys" menjadi "tidak" dan mendapatkan efek ini. Saya telah mencari cara untuk melakukan ini dalam kode untuk perangkat aktual yang memiliki tombol menu tetapi tidak bisa baik-baik saja. Ada yang bisa bantu saya?
sumber
Anda juga dapat menggunakan hack kecil ini di sini:
Tempat yang baik untuk meletakkannya adalah
onCreate
-Metode dari kelas Aplikasi Anda.Ini akan memaksa App untuk menampilkan menu overflow. Tombol menu akan tetap berfungsi, tetapi akan membuka menu di sudut kanan atas.
[Sunting] Karena sudah muncul beberapa kali sekarang: Peretasan ini hanya berfungsi untuk ActionBar asli yang diperkenalkan di Android 3.0, bukan ActionBarSherlock. Yang terakhir menggunakan logika internalnya sendiri untuk memutuskan apakah akan menampilkan menu overflow. Jika Anda menggunakan ABS, semua platform <4.0 ditangani oleh ABS dan karenanya tunduk pada logikanya. Peretasan masih akan bekerja untuk semua perangkat dengan Android 4.0 atau lebih tinggi (Anda dapat dengan aman mengabaikan Android 3.x, karena sebenarnya tidak ada tablet di luar sana dengan tombol menu).
Ada ForceOverflow-Theme khusus yang akan memaksa menu di ABS, tetapi tampaknya akan dihapus di versi masa depan karena komplikasi .
sumber
Field
pilih inijava.lang.reflect.Field
;)Saya menggunakan untuk mengatasinya dengan mendefinisikan menu saya seperti ini (juga dengan ikon ActionBarSherlock yang digunakan dalam contoh saya):
Saya akui ini mungkin memerlukan manual "manajemen overflow" di xml Anda, tetapi saya menemukan solusi ini bermanfaat.
Anda juga dapat memaksa perangkat untuk menggunakan tombol HW untuk membuka menu overflow, dalam aktivitas Anda:
:-)
sumber
Jika Anda menggunakan bilah tindakan dari perpustakaan dukungan (
android.support.v7.app.ActionBar
), gunakan yang berikut ini:sumber
Metode semacam ini dicegah oleh Sistem Desain Pengembang Android, tapi saya menemukan cara untuk melewatinya:
Tambahkan ini ke file menu XML Anda:
Selanjutnya, buat kelas bernama 'AppPickActionProvider', dan salin kode berikut untuk itu:
sumber
Yah saya pikir Alexander Lucas telah memberikan (sayangnya) jawaban yang benar jadi saya menandainya sebagai jawaban yang "benar". Jawaban alternatif yang saya tambahkan di sini adalah dengan mengarahkan pembaca baru ke pos ini di blog Android Developers sebagai diskusi yang agak lengkap tentang topik tersebut dengan beberapa saran spesifik tentang bagaimana menangani kode Anda saat beralih dari pra-level 11 ke Action Bar baru.
Saya masih percaya itu adalah kesalahan desain yang tidak memiliki tombol menu berperilaku sebagai tombol "Aksi Overflow" yang berlebihan dalam tombol menu yang mengaktifkan perangkat sebagai cara yang lebih baik untuk mentransisikan pengalaman pengguna tetapi air di bawah jembatan pada saat ini.
sumber
Saya tidak yakin apakah ini yang Anda cari, tetapi saya membangun Submenu di dalam ActionBar's Menu dan mengatur ikonnya agar sesuai dengan Ikon Menu Overflow. Meskipun tidak akan ada item yang dikirim secara otomatis ke sana, (yaitu Anda harus memilih apa yang selalu terlihat dan apa yang selalu meluap) menurut saya pendekatan ini dapat membantu Anda.
sumber
Di aplikasi gmail yang datang dengan ICS pra-instal, tombol menu dinonaktifkan ketika Anda memiliki beberapa item yang dipilih. Menu overflow di sini "dipaksa" untuk dipicu oleh penggunaan tombol overflow daripada tombol menu fisik. Ada lib pihak ke-3 yang disebut ActionBarSherlock yang memungkinkan Anda "memaksa" menu overflow. Tetapi ini hanya akan bekerja pada API level 14 atau lebih rendah (pra-ICS)
sumber
Jika Anda menggunakan Bilah Alat , Anda dapat menampilkan overflow pada semua versi dan semua perangkat, saya sudah mencoba beberapa perangkat 2.x, ini berfungsi.
sumber
Maaf jika masalah ini sudah mati.
Inilah yang saya lakukan untuk mengatasi kesalahan. Saya pergi ke tata letak dan membuat dua yang berisi toolbar. Satu adalah tata letak untuk sdk versi 8 dan yang lainnya adalah untuk sdk versi 21. Pada versi 8, saya menggunakan android.support.v7.widget.Toolbar sementara saya menggunakan android.widget.Toolbar pada tata letak sdk 21.
Lalu saya mengembang toolbar di aktivitas saya. Saya memeriksa SDK untuk melihat apakah itu 21 atau lebih tinggi. Saya kemudian mengembang tata letak yang sesuai. Ini memaksa tombol perangkat keras untuk memetakan ke toolbar yang sebenarnya Anda rancang.
sumber
Bagi siapa pun yang menggunakan yang baru
Toolbar
:sumber