본문 바로가기
android

안드로이드 스튜디오 bottom navigation & WebView - 두번째

by 최고집이사 2018. 3. 8.

안드로이드 스튜디오 bottom navigation & WebView - 두번째





오늘은 메뉴 아이콘 변경과 메뉴가 3개 이상일 때 애니메이션 제거하는 방법.


Bar 아이콘은 마우스 오른쪽 - new - vector Asset - 원하는 아이콘.

menu - navigation.xml 에 수정.


메뉴가 3개 이상일 때...


BottomNavigationViewHelper.java


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;


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);

        } 

    }  



MainActivity에 추가


BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);

navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);

BottomNavigationViewHelper.disableShiftMode(navigation);