Android

[안드로이드] 하단바(내비게이션바) 높이 구하기

유정주 2021. 8. 3. 09:00
반응형

안녕하세요.

안드로이드 UI/UX 디자인을 할 때 하단바 위에 뷰를 위치하게 하고 싶을 때가 있습니다.

안드로이드의 하단바

하지만 하단바 처리가 여간 까다로운 것이 아니죠.

기종에 따라 소프트웨어 하단바와 하드웨어 하단바로 나뉘기까지 하니까요.

오늘은 소프트웨어 하단바를 가지고 있다면 그 높이를, 없다면 0을 return하는 함수를 알려드리려고 합니다.


 

public static boolean isUseBottomNavigation(Context context) {
        int id = context.getResources().getIdentifier("config_showNavigationBar", "bool", "android");
        boolean useSoftNavigation = context.getResources().getBoolean(id);

        return useSoftNavigation;
}

public static int getBottomNavigationHeight(Context contect) {
        int bottomNavigation = 0;
        int screenSizeType = (contect.getResources().getConfiguration().screenLayout &
                Configuration.SCREENLAYOUT_SIZE_MASK);

        if(screenSizeType != Configuration.SCREENLAYOUT_SIZE_XLARGE) { //태블릿 예외처리
            int resourceId = contect.getResources().getIdentifier("navigation_bar_height", "dimen", "android");

            if (resourceId > 0) {
                bottomNavigation = contect.getResources().getDimensionPixelSize(resourceId);
            }
        }

        if (!isUseBottomNavigation(contect))
            bottomNavigation = 0;

        return bottomNavigation;
}

 

원하는 곳에서 해당 함수에 Context를 인자로 넘기면 하단바의 높이를 return 합니다.

 

참고로 애뮬레이터에서는 제대로 동작을 하지 않습니다.

감사합니다!

 


 


아직은 초보 개발자입니다.

더 효율적인 코드 훈수 환영합니다!

공감 댓글 부탁드립니다.

반응형