Apakah ada lencana atau metode standar android untuk menampilkan ikon pemberitahuan bilah tindakan dengan jumlah seperti pada contoh Google?
Jika tidak, lalu apa cara terbaik untuk membuatnya?
Saya baru mengenal android, tolong bantu.
Apakah ada lencana atau metode standar android untuk menampilkan ikon pemberitahuan bilah tindakan dengan jumlah seperti pada contoh Google?
Jika tidak, lalu apa cara terbaik untuk membuatnya?
Saya baru mengenal android, tolong bantu.
Jawaban:
Saya tidak yakin apakah ini solusi terbaik atau tidak, tetapi itulah yang saya butuhkan.
Tolong beritahu saya jika Anda tahu apa yang perlu diubah untuk kinerja atau kualitas yang lebih baik. Dalam kasus saya, saya punya tombol.
Item khusus pada menu saya - main.xml
Drawable bentuk kustom (latar belakang persegi) - shape_notification.xml
Layout untuk tampilan saya - feed_update_count.xml
MainActivity - mengatur dan memperbarui pandangan saya
sumber
MenuItem item = menu.findItem(R.id.badge); MenuItemCompat.setActionView(item, R.layout.feed_update_count); notifCount = (Button) MenuItemCompat.getActionView(item);
android:icon="..."
dalam item menu XML. Sudahandroid:actionLayout="..."
cukup, di sana. UntukButton
dalam tata letak XML, Anda dapat menggunakan tag penutup sendiri<Button ... />
karena tag tidak dapat memiliki konten. Anda harus menutup<shape>
tag (sekali lagi: menutup sendiri). Dan Anda tidak membutuhkannyainvalidateOptionsMenu()
. Bagi saya, itu bahkan tidak berhasil, karena lencana selalu meningkat dari XML lagi. Jadi, keseluruhannyasetNotifCount(...)
tidak berguna. Panggil sajasetText(...)
lencananya. Dan Anda dapatgetActionView()
memilihButton
langsung.Edit Sejak versi 26 dari perpustakaan dukungan (atau androidx) Anda tidak perlu lagi menerapkan kebiasaan
OnLongClickListener
untuk menampilkan tooltip. Cukup panggil ini:Saya hanya akan membagikan kode saya jika seseorang menginginkan sesuatu seperti ini:
tata letak / menu / menu_actionbar.xml
layout / action_bar_notifitcation_icon.xml
Perhatikan gaya dan android: properti yang dapat diklik . ini membuat tata letak ukuran tombol dan membuat latar belakang abu-abu saat disentuh.
drawable-xhdpi / ic_bell.png
Gambar 64x64 piksel dengan bantalan lebar 10 piksel dari semua sisi. Anda seharusnya memiliki bantalan lebar 8 piksel, tetapi saya menemukan sebagian besar item bawaan sedikit lebih kecil dari itu. Tentu saja, Anda ingin menggunakan ukuran yang berbeda untuk kepadatan yang berbeda.
drawable / rounded_square.xml
Di sini, # ff222222 (warna # 222222 dengan alpha #ff (sepenuhnya terlihat)) adalah warna latar belakang dari Bilah Tindakan saya.
com / ubergeek42 / WeechatAndroid / WeechatActivity.java
Di sini kita membuatnya dapat diklik dan diupdate! Saya membuat pendengar abstrak yang menyediakan pembuatan Toast di onLongClick, kode itu diambil dari sumber ActionBarSherlock .
sumber
app:actionLayout="@layout/action_bar_notifitcation_icon"
alih-alihandroid:actionLayout="@layout/action_bar_notifitcation_icon"
jika Anda menggunakanMenuItemCompat.getActionView
alih-alihmenu.findItem(R.id.menu_hotlist).getActionView();
untuk masalah kompatibilitas.MenuItem.getActionView
tidak kompatibel dengan level API <11.android:actionLayout
; AppCompat:app:actionLayout
di item menu Anda.Hanya untuk menambahkan. Jika seseorang ingin menerapkan gelembung lingkaran yang diisi, inilah kode (beri nama
bage_circle.xml
):Anda mungkin harus menyesuaikan ketebalan sesuai dengan kebutuhan Anda.
EDIT: Berikut tata letak tombol (beri nama
badge_layout.xml
):Di Menu buat item:
Dalam
onCreateOptionsMenu
mendapatkan referensi ke item Menu:Setelah menerima pemberitahuan untuk pesan, atur hitungan:
Kode ini menggunakan Iconify-fontawesome .
sumber
Saya tidak suka
ActionView
solusi berbasis, ide saya adalah:TextView
, yangTextView
akan diisi oleh aplikasiketika Anda perlu menggambar
MenuItem
:2.1. tata letak mengembang
2.2. panggil
measure()
&layout()
(jika tidakview
akan 0px x 0px, terlalu kecil untuk kebanyakan kasus penggunaan)2.3. atur
TextView
teks2.4. buat "tangkapan layar" dari tampilan
2.6.
MenuItem
ikon set berdasarkan bitmap dibuat pada 2.4keuntungan!
jadi, hasilnya harus seperti
@drawable/unread_background
adalahTextView
latar belakang hijau itu,@drawable/ic_menu_gallery
tidak benar-benar diperlukan di sini, hanya untuk melihat hasil layout di IDE.tambahkan kode ke
onCreateOptionsMenu
/onPrepareOptionsMenu
Terapkan metode build-the-icon:
Kode lengkapnya ada di sini: https://github.com/cvoronin/ActionBarMenuItemCounter
sumber
Ok, untuk solusi @AndrewS untuk bekerja dengan pustaka appCompat v7 :
.
Sisa kode sama.
sumber
android:actionLayout
keapp:actionLayout
workes seperti pesona.Coba lihat jawaban untuk pertanyaan-pertanyaan ini, terutama yang kedua yang memiliki kode sampel:
Bagaimana menerapkan nilai-nilai dinamis pada item menu di Android
Bagaimana cara mendapatkan teks pada Ikon ActionBar?
Dari apa yang saya lihat, Anda harus membuat
ActionView
implementasi kustom Anda sendiri . Alternatif mungkin kebiasaanDrawable
. Perhatikan bahwa tampaknya tidak ada implementasi asli dari penghitungan pemberitahuan untuk Bilah Tindakan.EDIT: Jawaban yang Anda cari, dengan kode: Tampilan Pemberitahuan Kustom dengan penerapan sampel
sumber
Drawable
s seperti yang terlihat dalam dua tautan berikut: stackoverflow.com/questions/6691818/… dan stackoverflow.com/questions/3972445/…Drawable
sesuatu seperti tautan di sini dan kemudian membuat atribut untuk kustom AndaDrawable
yang memiliki teks di atasnya sehingga Anda dapat membuat semuanya dalam XML dan paskan sesuai keinginan. Atau, Anda bisa menambahkan Drawable di Java jika ini terlalu sulit.Saat Anda menggunakan bilah alat:
dan di panggilan data refresh Anda refreshMenu ():
sumber
Saya menemukan solusi yang sangat baik di sini , saya menggunakannya dengan kotlin.
Pertama, di folder yang dapat digambar, Anda harus membuat
item_count.xml
:Di
Activity_Main
Layout Anda, beberapa seperti:Dan Anda dapat memodifikasi seperti:
sumber
Saya menemukan cara yang lebih baik untuk melakukannya. jika Anda ingin menggunakan sesuatu seperti ini
Gunakan ketergantungan ini
buat satu file xml dalam drawable dan Simpan sebagai Badge.xml
Sekarang di mana pun Anda ingin menggunakan lencana itu, gunakan kode berikut dalam xml. dengan bantuan ini, Anda akan dapat melihat lencana itu di sudut kanan atas gambar Anda atau apa pun.
Sekarang akhirnya di YourFile.java gunakan 2 hal sederhana ini .. 1) Tentukan
2) di mana loop Anda atau apa pun yang menghitung nomor ini gunakan ini:
di sini,
mBadge.setNumber(0)
tidak akan menunjukkan apa pun.Semoga bantuan ini.
sumber