2018 년 5 월 8 일 업데이트
당신은 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가 제대로 작동하므로 이제 텍스트와 아이콘으로 표시 할 수 있습니다. 나는 이것을 조각의 루트 CoordinatorLayout에 가지고 있습니다.
또한 추가하는 것을 잊지 마십시오
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");
}
}
}