如何在点击底部导航时从中心到边缘禁用灰色动画

时间:2019-05-15 21:09:20

标签: android animation kotlin bottomnavigationview

在回顾了很多材料之后,我仍然没有找到解决方案。正如您在下面的git上看到的那样,当您点击botton导航图标时,它从中心到边缘都有灰色动画。有没有办法禁用此动画?

Gray animation 这是我的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。

3 个答案:

答案 0 :(得分:1)

使用 app:itemRippleColor="@color/your_color" 设置您的自定义颜色以获得点击效果或使用 app:itemRippleColor="@null" 设置无效果

答案 1 :(得分:0)

您必须创建一个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);

答案 2 :(得分:0)

找到了解决方案,只需将app:itemBackground="@null"添加到xml。