Monday, May 27, 2019

Android에서 하단 Navigation Bar(Soft key) 항상 숨기기

인터넷에 'Navigationbar always hide'을 검색하면 네비게이션바를 숨기는 여러 방법들을 쉽게 찾을 수 있습니다.

가장 많이 나오는 방법은 activity의 onResume 또는 onWindowFocusChanged 메소드에 아래와 같은 코드를 추가하는 것입니다:


decorView.setOnSystemUiVisibilityChangeListener( visibility -> decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY));

아마도 공식문서에서도 onWindowFocusChanged에 적용하라고 권장하기 때문일 것입니다. 이 방법은 잘 동작하지만, app이 시작되자마자 EditText에 focus가 가게 되면 navigation bar가 다시 return되고 사라지지 않는 문제점이 있습니다.

효과적인 해결방안

해당 문제를 해결하기 위해 여러 방법을 찾아보고 적용해봤지만 대부분 중복되는 내용으로 잘 동작하지 않았습니다. 그래서 제가 찾아낸, 잘 동작하는 방법을 알려드리겠습니다.

방법은 의외로 간단한데, activity의 onCreate 메소드에서 아래의 코드를 추가하면 됩니다:


decorView = getWindow().getDecorView();
decorView.setOnSystemUiVisibilityChangeListener(
    visibility -> decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)
);

중요한 점은 decorView.setOnSystemUiVisibilityChangeListener에도 navigation bar를 숨기는 코드를 추가하는 것입니다.


0 개의 댓글:

Post a Comment