อัปเดตตั้งแต่วันที่ 8 พฤษภาคม 2561
คุณสามารถใช้
app:labelVisibilityMode="labeled"
โดยตรงใน<android.support.design.widget.BottomNavigationView />
ที่มา: https://developer.android.com/reference/com/google/android/material/bottomnavigation/LabelVisibilityMode
ไม่ต้องการวิธีแก้ปัญหาที่ยาวด้านล่างนี้
คำตอบก่อนหน้านี้
ฉันมีพฤติกรรมแปลก ๆ กับ BottomNavigationView เมื่อฉันเลือกรายการ / ส่วนใดส่วนหนึ่งในนั้นส่วนจะกด BottomNavigationView ให้ต่ำลงเล็กน้อยดังนั้นข้อความของ BottomNavigationView จะอยู่ด้านล่างของหน้าจอดังนั้นจึงมีเพียงไอคอนเท่านั้นที่มองเห็นได้และข้อความจะถูกซ่อนเมื่อคลิกที่รายการใด ๆ
หากคุณกำลังเผชิญกับพฤติกรรมแปลก ๆ นี่คือวิธีแก้ปัญหา เพียงแค่ลบ
android:fitsSystemWindows="true"
ในเค้าโครงรากของส่วนย่อยของคุณ เอาแค่นี้ก็บูม! BottomNavigationView จะทำงานได้ดีตอนนี้สามารถแสดงด้วยข้อความและไอคอน ฉันมีสิ่งนี้ในผู้ประสานงานรากของฉันเค้าโครงของส่วน
อย่าลืมเพิ่ม
BottomNavigationViewHelper.removeShiftMode(bottomNavigationView);
ในกิจกรรมของคุณเพื่อปิดใช้งานโหมดการเปลี่ยนเกียร์
นี่คือคลาสนั้น:
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");
}
}
}