BottomNavigationView tidak menampilkan judul menu yang tidak aktif.
Bagaimana cara menunjukkan judul semua elemen menu di bottomNavigationBar? Masalahnya adalah bahwa dalam kasus saya hanya ditampilkan judul elemen yang diklik.
android
android-support-design
bottomnavigationview
Natan Rubinstein
sumber
sumber
Jawaban:
Implementasi
BottomNavigationView
memiliki kondisi: ketika ada lebih dari 3 item maka gunakan mode shift.Pada saat ini Anda tidak dapat mengubahnya melalui API yang ada dan satu-satunya cara untuk menonaktifkan mode shift adalah dengan menggunakan refleksi.
Anda membutuhkan kelas pembantu:
Dan kemudian menerapkan
disableShiftMode
metode pada AndaBottomNavigationView
, tetapi ingat jika Anda menggembungkan tampilan menu dari kode Anda, Anda harus menjalankannya setelah menggembungkan.Contoh penggunaan:
PS.
Ingat, Anda harus menjalankan metode ini setiap kali Anda mengubah item menu di menu Anda
BottomNavigationView
.MEMPERBARUI
Anda juga perlu memperbarui file konfigurasi proguard (mis. Proguard-rules.pro), kode di atas menggunakan refleksi dan tidak akan berfungsi jika proguard mengaburkan
mShiftingMode
bidang.Terima kasih Muhammad Alfaifi untuk menunjukkan masalah ini dan memberikan cuplikan .
PEMBARUAN 2
Seperti yang Jolanda Verhoef tunjukkan perpustakaan Support baru (
28.0.0-alpha1
) dan juga perpustakaan Material Components baru (1.0.0-beta01
) menawarkan properti publik yang dapat digunakan untuk memanipulasi mode pemindahan di atas 3 item menu.Di pustaka Komponen Material itu juga berlaku jika ada 5 item menu.
PEMBARUAN 3
Seperti yang ditunjukkan oleh @ThomasSunderland, Anda dapat mengatur properti ini menjadi false
app:itemHorizontalTranslation="false"
tanpaEnabled
postfix untuk menonaktifkan pemindahan animasi.Anda dapat memeriksa panduan lengkap untuk menata Navigasi Bawah Laut di sini
sumber
Karena perpustakaan dukungan 28.0.0-alpha1:
sumber
app:
tidakandroid:
Untuk menonaktifkan animasi teks, Anda juga dapat menggunakan ini di file dimens.xml Anda:
Anda mungkin juga perlu menambahkan ini dalam manifes Anda:
sumber
tools:override="true"
<dimen name="design_bottom_navigation_active_text_size" tools:ignore="PrivateResource">12sp</dimen>
Anda sekarang dapat menggunakan
app:labelVisibilityMode="[labeled, unlabeled, selected, auto]"
di28-alpha
labeled
akan membuat semua label terlihat.unlabeled
hanya akan menampilkan ikon.selected
hanya akan menampilkan label untuk item yang dipilih dan menggeser item.auto
akan memilih berlabel atau dipilih berdasarkan jumlah item yang Anda miliki. berlabel 1-3 item dan dipilih untuk 3+ item.sumber
Jawaban Przemysław di Kotlin sebagai fungsi ekstensi
Penggunaan (dengan Ekstensi Android Kotlin):
sumber
Bekerja untukku
atau
sumber
Untuk menonaktifkan animasi teks dan mengurangi ukuran font gunakan ini di file dimens.xml Anda:
sumber
Navigate
->File...
>design_bottom_navigation_item.xml
untuk melihat bahwa tidak ada cara lain.MEMPERBARUI
di Android SDK versi 28 dan di atas mereka telah berubah
item.setShiftingMode(false)
menjadiitem.setShifting(false)
Mereka juga menghapus bidang
mShiftingMode
Jadi penggunaannya akan
sumber
Seperti yang orang lain tunjukkan, karena pustaka dukungan 28.0.0-alpha1 dimungkinkan:
atau Anda dapat mengaturnya secara terprogram .
Catatan: jika Anda meningkatkan dari pustaka dukungan versi yang lebih lama, jangan lupa untuk meningkatkan kompilasi versi SDK. Periksa versi pustaka dukungan di sini: Versi Pustaka Dukungan
Namun, Anda mungkin masih mendapatkan labelVisibilityMode tidak ditemukan pesan saat dikompilasi, jika aplikasi Anda bergantung pada versi yang lebih lama dari perpustakaan dukungan desain. Jika ini masalahnya, cobalah untuk memutakhirkan ke versi ketergantungan yang diberikan, yang setidaknya tergantung pada versi 28.0.0-alpha1 dari perpustakaan dukungan desain. Jika itu tidak memungkinkan, tentukan ketergantungan secara eksplisit.
Jika Anda menggunakan Gradle
Untuk menambahkan ketergantungan dukungan desain secara eksplisit di build.gradle Anda :
implementasi 'com.android.support:design:28.0.0'
sumber
Untuk jawaban yang diperbarui menggunakan default. Perbarui ke perpustakaan desain terbaru
dan dimasukkan ke atribut xml BottomNavigationView Anda
Anda dapat menempatkannya juga secara terprogram
Anda dapat menemukan sumber di sini BottomNavigationView
Semoga ini bisa membantu Anda.
sumber
app:labelVisibilityMode
?Untuk
BottomNavigationView
add Andaapp:labelVisibilityMode="unlabeled"
yang menghasilkan sebagai berikut
sumber
Ini sangat sederhana, Cukup tambahkan properti di BottomNaviationView
sumber
Saya memiliki beberapa perilaku aneh dengan BottomNavigationView. Ketika saya memilih item / fragmen di dalamnya, fragmen mendorong BottomNavigationView sedikit lebih rendah, sehingga teks BottomNavigationView berada di bawah layar, jadi hanya ikon yang terlihat dan teks menjadi tersembunyi saat mengklik item apa pun.
Jika Anda menghadapi perilaku aneh itu di sini adalah solusinya. Hapus saja
dalam tata letak akar fragmen Anda. Hapus ini dan booming! BottomNavigationView akan berfungsi dengan baik, sekarang dapat ditampilkan dengan teks dan ikon. Saya punya ini di root CoordinatorLayout of fragmen.
Juga jangan lupa untuk menambahkan
dalam aktivitas Anda untuk menonaktifkan mode pemindahan. Meskipun tidak persis terkait dengan pertanyaan yang diajukan, tetapi saya tetap merasa ini bermanfaat.
sumber
Ini adalah perpustakaan pihak ketiga yang saya gunakan dan memiliki banyak opsi penyesuaian seperti menonaktifkan mode shift, hanya menampilkan ikon, mengatur ukuran ikon, dll. BottomNavigationViewEx
sumber
Untuk menghapus animasi sepenuhnya:
Jika Anda juga ingin menghilangkan animasi margin atas yang sedikit mengganggu itu, Anda perlu lebih banyak kode refleksi. Inilah solusi lengkap yang menghilangkan animasi apa pun:
Dan pastikan untuk menambahkannya ke file konfigurasi proguard Anda:
sumber
perbarui perpustakaan dukungan Anda ke 28.0.0.
sumber
Jika Anda menggunakan dukungan: desain: 28.0.0 tambahkan aplikasi baris ini: labelVisibilityMode = "tidak berlabel" ke BottomNavigationView Anda
sumber
hanya ingin menambahkan bahwa di atas metode ini disableShiftMode tambahkan kode di bawah ini juga. @SuppressLint ("RestrictedApi")
sumber
https://android.jlelse.eu/disable-shift-label-animation-from-bottom-navigation-android-b42a25dcbffc
1
2
3
sumber
Anda dapat menggunakan ini untuk menampilkan teks dan ikon di BottomNevigationView untuk 3 hingga 5 item dan berhenti bergeser.
Tetapi Anda akan menghadapi masalah pemotongan teks panjang di BottmNevigationView untuk 5 item. untuk itu, saya menemukan solusi yang baik untuk menghentikan pergeseran teks serta ikon BottomNevigationView. Anda juga dapat berhenti menggeser teks dan juga Ikon di BottomNevigationView. Cuplikan kode diberikan di sini.
1. Tambahkan ini beberapa baris kode di BottomNevigationView seperti yang ditunjukkan
2. Tambahkan Item Menu seperti sebagai berikut: -
3. Tambahkan gaya ini dalam file style.xml:
4) Tambahkan ini dalam folder Dimen
Saya mendapat bantuan dari tautan dan tautan ini . Anda juga bisa mendapatkan bantuan dengan mempelajari tautan - tautan ini . Ini banyak membantu saya. Semoga ini juga membantu Anda. Terima kasih....
sumber