Notice
Recent Posts
«   2025/02   »
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
Tags more
관리 메뉴

MyWorld

[Android : Java] bottom navigation 애니메이션 제거 본문

Android 앱 개발 (Java)

[Android : Java] bottom navigation 애니메이션 제거

vBest 2021. 6. 3. 10:30

안드로이드 스튜디오에서 하단 네비게이션을 만들면 다음과 같이 기본적으로 애니메이션이 적용되어 있다.

 

나는 모든 메뉴의 위치를 고정시키고 메뉴 이름이 선택하기 전에 보이게 하고 싶었다.  

디폴트 애니메이션이 적용된 네비게이션

구글링하다가 먼저 찾은 코드에서는 setShiftingMode() 메소드를 사용하면 된다고 했다. 

BottomNavigationView 의 BottomNavigationItemView.setShiftingMode() 메소드를 사용할 수 없어서 구글링을 하다가

StackOverflow에서 해결책을 찾았다. 

@SuppressLint("RestrictedApi")
public static void removeNavigationShiftMode(BottomNavigationView view) {
    BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);
    menuView.setLabelVisibilityMode(LabelVisibilityMode.LABEL_VISIBILITY_LABELED);
    menuView.buildMenuView();
}

출처 : https://stackoverflow.com/questions/51342200/cannot-resolve-method-setshiftingmodeboolean-in-bottomnavigationview

 

위에서 정의한 removeNavigationShiftMode() 메소드를 사용할 수 있게 되었다.

        navigationView = findViewById(R.id.bottom_nav);
        navigationView.setOnNavigationItemSelectedListener(selectedListener);
        navigationView.getMenu().findItem(R.id.home_nav).setChecked(true);
        BottomNavigationHelper.removeNavigationShiftMode(navigationView); //바텀 네비 애니메이션 제거함

다음은 애니메이션 제거를 적용한 결과이다. 애니메이션이 제거되니 네비게이션 타이틀도 바로 보이게 바뀌었다.