Останавливает BottomNavigationView от увеличения размера шрифта элементов при нажатии - PullRequest
0 голосов
/ 10 июня 2019

Поведение BottomNavigationView по умолчанию приводит к увеличению размера шрифтов элементов при нажатии на них, что приводит к усечению некоторых более длинных заголовков.

Я бы хотел избежать увеличения размера шрифта, как я могу это сделать?

Спасибо!

Ответы [ 2 ]

1 голос
/ 10 июня 2019

добавьте свой размер текста в файл размеров с помощью следующей клавиши

 <dimen name="design_bottom_navigation_active_text_size" tools:override="true">12sp</dimen>
<dimen name="design_bottom_navigation_text_size" tools:override="true">12sp</dimen>

Для удаления мигания необходимо отключить смещение.

import android.annotation.SuppressLint;
import android.support.design.internal.BottomNavigationItemView;
import android.support.design.internal.BottomNavigationMenuView;
import android.support.design.widget.BottomNavigationView;
import android.util.Log;

import java.lang.reflect.Field;

public class BottomNavigationViewHelper {
    @SuppressLint("RestrictedApi")
    public static void disableShiftMode(BottomNavigationView 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);
                //noinspection RestrictedApi
                item.setShifting(false);
                // set once again checked value, so view will be updated
                //noinspection RestrictedApi
                item.setChecked(item.getItemData().isChecked());
            }
        } catch (NoSuchFieldException e) {
            Log.e("Error BottomBar", e.getLocalizedMessage());
        } catch (IllegalAccessException e) {
            Log.e("Error BottomBar", e.getLocalizedMessage());

        }
    }
}

Примените этот класс к навигационному представлению

BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);
0 голосов
/ 10 июня 2019

Теперь вам не нужно использовать отражение для отключения смещения.

Из библиотеки поддержки 28.0.0 или библиотеки материалов добавлен новый метод.

setLabelVisibilityMode() check здесь .

вы можете использовать его как.

bottomNavigationView.setLabelVisibilityMode(LABEL_VISIBILITY_UNLABELED);
...