본문 바로가기

안드로이드/오류해결

[ AOS ] - Snack bar bottom margin not working

반응형

Toast -> Snack Bar 변경 작업을 진행하면서 액션 버튼이나 하단 탭으로 인해 화면에 따른 Snack Bar 하단에 마진을 줘 특정 버튼을 가리지 않아야 했습니다.

Snack Bar 구현은 해당 포스팅을 참고해주세요 ! 

 

[AOS] SnackBar vs Toast

토스트나 스낵바는 가벼운 메세지를 유저에게 전달할때 주로 사용하는데 장단점이 명확해 상황에 맞게 사용하면 좋을것 같습니다. 로그인 화면에서 아이디를 입력하지 않고 로그인 버튼을 눌

superwony.tistory.com

 

바텀의 마진을 주는 방법 코드를 찾아 새로운 프로젝트를 만들어서 테스트 했을땐 작동 했지만 기존 플젝에 추가하니 작동하지 않았습니다.

val snackbarLayout = snackbar.view as Snackbar.SnackbarLayout

snackbarLayout.translationY = -150f

대체 뭐가 원인일까.. 고민하다가 

 

Snack Bar의 Gravity를 Top으로 변경하고 위에서부터 마진을 주는 방법으로 변경해서 테스트 해봤습니다.

 var height= CommonUtil.getScreenHeight(this)

        layoutParam.gravity = Gravity.TOP
        layoutParam.setMargins(0, (height - toastBottomMargin).toInt()  , 0, 0)
        snackBarView.layoutParams = layoutParam
        snack.show()

작동은 하지만 너무 짜친 방법이라 무엇이 원인인지 찾아봐야했다. 그리고 Snack Bar의 텍스트가 2줄이 될 경우나 그 이상을 완벽하게 커버할 수 없기 때문에 찾아야 했습니다. ( 상단 마진을 조절하는 방식이기 때문에 )

 

해결

정답은 테마였습니다. 

( 라이브러리들의 버전들도 다 비교 체크 해보고 target sdk 버전도 변경해봤습니다. ) 

// before
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

// after
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">

 

되게 간단한 문제인데 안되시는 분들의 시간을 절약하길 바랍니다.

화이팅

 

반응형