본문 바로가기
Android

[안드로이드] 커스텀 다이어로그(Custom Dialog) 모서리 흰 배경이 보이는 현상 해결방법, 좌우 여백 조절 방법

by JongSeok 2023. 7. 28.

커스텀 다이어로그를 만들다 보면 가장 흔하게 겪는 두 가지 문제인 것 같습니다, 해결방법을 소개해 드리겠습니다-!

 

1. 모서리의 흰색 배경이 보일 때 

 

다이어로그의 모서리를 둥글게 조절하면서 기존의 배경(background)에 흰색이 그대로 남게 되는 경우입니다.

 

모서리가 흰색으로 나타나는 현상

xml 파일에도 전혀 문제가 없고, xml 상의 background 속성을 이것저것 변경해 봐도 해결이 되지 않았습니다.

 

해결방법은 커스텀 다이어로그를 생성하는 소스코드에 해당 코드를 추가해 줍니다.

dialog.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
2. 좌우 여백이 조절되지 않을 때

 

좌우 마진이 적용되지 않고 전체 너비를 차지하는 현상

xml 파일에서 좌우로 일정 여백을 차지하도록 설정하기 위해 padding, margin 속성을 조절하는데 말을 듣지 않습니다..

 

본인은 이런 경우 해당 다이어로그를 레이아웃에 한 번 더 감싸주는 방식으로 해결했습니다.

// 한 번 더 감싸는 최상위 레이아웃
<androidx.appcompat.widget.LinearLayoutCompat
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

    // 기존 다이어로그 layout
    <androidx.appcompat.widget.LinearLayoutCompat
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_marginHorizontal="30dp"
            android:background="@drawable/background_rad_8">
        ...
        ...
        ...
    </androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>

최상위 레이아웃을 만들어 기존의 레이아웃 코드를 새로 생성한 최상위 레이아웃 내부에 위치시킵니다.

 

현재 좌우로 화면 전체를 차지하고 있는 공간에 부모 레이아웃을 두고, 다이어로그 화면은 그 안에서 자식 레이아웃으로 관리하는 겁니다.

자식 레이아웃(다이어로그)에 좌우 마진을 30dp로 설정했으니 투명하지만 최상위 레이아웃(부모)은 좌우로 전체를 차지하고 다이어로그(자식)는 설정한 여백에 따라 위치하게 됩니다 :)

728x90
반응형