DIPERBARUI DARI 8 Mei 2018
Anda dapat menggunakan
app:labelVisibilityMode="labeled"
langsung di<android.support.design.widget.BottomNavigationView />
Sumber: https://developer.android.com/reference/com/google/android/material/bottomnavigation/LabelVisibilityMode
Tidak perlu solusi panjang di bawah ini.
JAWABAN SEBELUMNYA
Saya memiliki beberapa perilaku aneh dengan BottomNavigationView. Ketika saya memilih item / fragmen apa pun di dalamnya, fragmen tersebut mendorong BottomNavigationView sedikit lebih rendah, sehingga teks BottomNavigationView berada di bawah layar, jadi hanya ikon yang terlihat dan teks tersembunyi saat mengklik item apa pun.
Jika Anda menghadapi perilaku aneh itu maka inilah solusinya. Hapus saja
android:fitsSystemWindows="true"
dalam tata letak root Anda dari fragmen. Hapus saja ini dan boom! BottomNavigationView akan berfungsi dengan baik, sekarang dapat ditampilkan dengan teks dan ikon. Saya memiliki ini di root CoordinatorLayout saya dari fragment.
Juga jangan lupa tambahkan
BottomNavigationViewHelper.removeShiftMode(bottomNavigationView);
dalam aktivitas Anda untuk menonaktifkan mode pergeseran.
Inilah kelas itu:
public class BottomNavigationViewHelper {
@SuppressLint("RestrictedApi")
public static void removeShiftMode(BottomNavigationView view) {
//this will remove shift mode for bottom navigation view
BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);
try {
Field shiftingMode = menuView.getClass().getDeclaredField("mShiftingMode");
shiftingMode.setAccessible(true);
shiftingMode.setBoolean(menuView, false);
shiftingMode.setAccessible(false);
for (int i = 0; i < menuView.getChildCount(); i++) {
BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i);
item.setShiftingMode(false);
// set once again checked value, so view will be updated
item.setChecked(item.getItemData().isChecked());
}
} catch (NoSuchFieldException e) {
Log.e("ERROR NO SUCH FIELD", "Unable to get shift mode field");
} catch (IllegalAccessException e) {
Log.e("ERROR ILLEGAL ALG", "Unable to change value of shift mode");
}
}
}