ATUALIZAÇÃO DE 8 de maio de 2018
Você pode usar
app:labelVisibilityMode="labeled"
diretamente<android.support.design.widget.BottomNavigationView />
Fonte: https://developer.android.com/reference/com/google/android/material/bottomnavigation/LabelVisibilityMode
Não precisa disso abaixo da solução longa.
RESPOSTA ANTERIOR
Eu tive um comportamento estranho com BottomNavigationView. Quando eu selecionava qualquer item / fragmento, o fragmento empurra o BottomNavigationView um pouco mais para baixo, para que o texto do BottomNavigationView fique abaixo da tela, para que apenas os ícones fiquem visíveis e o texto oculto ao clicar em qualquer item.
Se você está enfrentando esse comportamento estranho, aqui está a solução. Basta remover
android:fitsSystemWindows="true"
no seu layout raiz do fragmento. Basta remover isso e boom! BottomNavigationView funcionará bem, agora pode ser mostrado com texto e ícone. Eu tinha isso na minha raiz CoordinatorLayout do fragmento.
Também não se esqueça de adicionar
BottomNavigationViewHelper.removeShiftMode(bottomNavigationView);
em sua atividade para desativar o modo de mudança.
Aqui está essa classe:
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");
}
}
}