Как отключить серую анимацию от центра к краям при нижней навигации при нажатии - PullRequest
0 голосов
/ 16 мая 2019

Изучив много материала, я так и не нашел решения. Как вы можете видеть на Git ниже, когда вы нажимаете на иконку навигации, она имеет серую анимацию от центра к краям. Есть ли способ отключить эту анимацию?

Серая анимация Вот мой XML

<com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_gravity="bottom"
        android:background="@android:color/white"
        app:elevation="0dp"
        app:itemIconTint="@color/bottomNavigationIconColor"
        app:itemTextColor="@drawable/nav_item_text_color_state"
        app:labelVisibilityMode="labeled"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:menu="@menu/bottom_navigation_main" />

и nav_item_text_color_state

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_checked="false"
        android:color="@color/bottomNavigationIconColor" />
    <item
        android:state_checked="true"
        android:color="#005EFF" />
</selector>

Обновление Нашел решение для этого. Чтобы отключить этот эффект серой ряби, просто добавьте app:itemBackground="@null" к xml.

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Найдя решение, просто добавьте app:itemBackground="@null" в xml.

0 голосов
/ 16 мая 2019

вам нужно создать bottomNavigationViewHelper

public class BottomNavigationViewHelper {

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.setShiftingMode(false);
            // set once again checked value, so view will be updated
            //noinspection RestrictedApi
            item.setChecked(item.getItemData().isChecked());
        }
    } catch (NoSuchFieldException e) {
        Log.e("BNVHelper", "Unable to get shift mode field", e);
    } catch (IllegalAccessException e) {
        Log.e("BNVHelper", "Unable to change value of shift mode", e);
    }
 }
}

и затем примените это в своей деятельности к вашему bottomNavigationView

BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...