Home Blog Cách loại bỏ hiệu ứng chuyển động BottomNavigationView Android

Cách loại bỏ hiệu ứng chuyển động BottomNavigationView Android

Mặc định BottomNavigationView sẽ không có thuộc tính để bạn loại bỏ hiệu ứng chuyển động khi Active một “item” trong “menu”. Để loại bỏ hiệu ứng này bạn có thể tạo một Class bổ sung để loại bỏ hiệu ứng đó.

loai-bo-hieu-ung-chuyen-dong-bottom-navigation-android

Đầu tiên, hãy thêm đoạn Class sau vào trong Project Android của bạn:

class BottomNavigationViewHelper {

    @SuppressLint("RestrictedApi")
    static void removeShiftMode(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);
                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");
        }
    }

}

Và khi khai báo BottomNavigationView, bạn khai báo như sau:

BottomNavigationView bottomNavigationView;
bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation);
BottomNavigationViewHelper.removeShiftMode(bottomNavigationView);

LEAVE A REPLY

Please enter your comment!
Please enter your name here