android 에서 하단네비게이션바 (ButtomNavigationBar) 애니메이션 (Shifting) 제거하는 방법.
찾아보니 하단 바의 아이콘이 3개 이상일 때 API 에서 적용되는거라 API 자체에선 불가하고,
따로 Helper Class 를 만들어 관리해줘야 한다고 한다.
참고 : https://stackoverflow.com/questions/40176244/how-to-disable-bottomnavigationview-shift-mode
1. ButtomNavigationViewHelper 클래스 생성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | package com.nadri.common; 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; /* Buttom bar 의 menu 가 3개 이상일 시 실행되는 애니메이션(Shifting) 방지 */ public class BottomNavigationViewHelper { public 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"); } } } | cs |
2. Activity 의 onCreate() 메소드에서 선언
1 2 3 | BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bbar); BottomNavigationViewHelper.removeShiftMode(bottomNavigationView); BottomNavigationView bbar = (BottomNavigationView)findViewById(R.id.bbar); | cs |
반응형
'MOBILE > Android' 카테고리의 다른 글
안드로이드 Fragment 끼리의 전환 후 뒤로가기 버튼 클릭 먹히게끔 설정하는 방법 (0) | 2018.08.03 |
---|---|
20180802 오늘자 안드로이드 정리 (0) | 2018.08.02 |
[Android] 쿠키와 세션 유지2 - SharedPrefrence Bean 생성 (0) | 2018.08.01 |
[Android] 안드로이드 로그인/로그아웃 등 쿠키와 세션 유지 (0) | 2018.08.01 |
안드로이드 ToolBar 사용하는 방법 (0) | 2018.08.01 |
댓글