添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

[Android] XML 다이얼로그 배경 Dim 투명도 조절하기

이지훈 · 2023년 2월 7일
0


사진과 같은 화면을 구현해야 하는 일이 생겨 작업을 진행하다가
Android의 다이얼로그를 열었을 경우 기본 dim 투명도와 시안의 투명도가 다르다는 것을 발견하였다.

시안이 배경이 더 어둡기 때문에(alpha 값이 높음) 어떻게 하면 더 어둡게 설정할 수 있을지 검색을 해보았고 답을 찾을 수 있었다.(글 맨 마지막 레퍼런스 확인)

기본 다이얼로그 테마 적용시 Dim 색상(살짝 밝다는 것을 확인할 수 있다)

styles

    <style name="OnBoardingDialog" parent="@style/Theme.MaterialComponents.Dialog">
        <item name="android:background">@android:color/transparent</item>
        <item name="android:backgroundDimEnabled">true</item>
        <item name="android:backgroundDimAmount">0.72</item>
    </style>

backgroudDimEnabled 는 default 가 true 이므로 생략해도 된다.
true 로 설정될 경우 system 에 지정된 color 를 통해 바깥 영역을 어둡게 처리한다.

DimAmount 를 통해 DimAlpha 값을 조절할 수 있으며, 1에 가까울 수록 어둡다

Dim 처리를 아예 하지 않고 싶다면 backgroundDimEnabled 속성을 false 로 설정하거나

context?.let {
            dialog?.let { dialog ->
                dialog.window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)

dialog 내에서 해당 flag 코드를 적용해주면 된다.

styles 파일 내에서 custom style 을 만들었다면

override fun getTheme(): Int = R.style.OnBoardingDialog

dialog 내에서 getTheme() 함수를 override 하여 속성을 적용해줘야 화면에 반영이 된다. 빼먹고 적용이 안된다는 질문 글들을 많이 본 것 같다.

참고 문서)