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");
}
}
}