
안드로이드에서 버튼, 레이아웃 등 뷰(View)의 모서리를 둥글게 만들고 배경색을 적용하는 방법을 소개합니다. 이 글은 Android 개발자라면 누구나 쉽게 따라할 수 있도록 XML 기반 예제와 단계별 설명을 제공합니다.
✅ 왜 Rounded Corner를 써야 할까?
요즘 UI/UX 디자인에서 부드러운 곡선은 사용성 향상과 함께 모던한 디자인을 제공하는 핵심 요소입니다. Google의 Material Design 가이드라인에서도 라운드 코너(Rounded Corners)를 적극 권장하고 있어요.
🔧 적용 방법 1: Drawable XML을 이용한 둥근 모서리 배경 적용
(1) Drawable XML 파일 생성하기
res/drawable/rounded_bg.xml 파일을 만들어 아래처럼 작성합니다:
<!-- res/drawable/rounded_bg.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- 배경색 지정 -->
<solid android:color="#FF5722" />
<!-- 모서리를 둥글게 -->
<corners android:radius="16dp" />
</shape>
💡 android:radius="16dp"는 모든 모서리에 동일한 반지름을 적용합니다. 필요하다면 topLeftRadius, bottomRightRadius 등으로 개별 지정도 가능해요.
(2) XML의 뷰에 배경 적용하기
이제 원하는 View에 위에서 만든 rounded_bg.xml을 배경으로 설정해줍니다.
<FrameLayout
android:layout_width="200dp"
android:layout_height="100dp"
android:background="@drawable/rounded_bg"
android:clipToOutline="true" />
🔐 중요! clipToOutline="true" 속성을 반드시 추가해야 실제로 모서리가 잘린 것처럼 보여요. 이 속성이 없으면 배경은 둥글게 보이더라도 내부 콘텐츠는 네모로 보일 수 있습니다.
⚠️ clipToOutline이 작동하지 않을 때?
- clipToOutline은 API 21 (Lollipop) 이상에서만 작동합니다.
- 일부 ViewGroup (예: LinearLayout)은 기본적으로 Outline을 제공하지 않아 클리핑이 되지 않습니다.
- 이럴 땐 CardView 또는 MaterialCardView 사용을 추천합니다.
✅ 적용 방법 2: CardView를 이용한 더 간단한 라운드 코너
CardView는 안드로이드에서 라운드 처리 + 그림자 + 배경 처리를 한번에 할 수 있는 강력한 View입니다.
<androidx.cardview.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:cardCornerRadius="16dp"
app:cardBackgroundColor="#4CAF50"
app:cardElevation="4dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CardView 안의 텍스트"
android:padding="16dp" />
</androidx.cardview.widget.CardView>
💡 CardView는 내부적으로 모서리 클리핑까지 다 처리해주기 때문에, clipToOutline 설정이 필요 없습니다.
✅ 정리: 어떤 방법을 써야 할까?
방법 | 장점 | 단점 |
Drawable + clipToOutline | 커스터마이징이 유연함 | 일부 ViewGroup에선 작동 안 함 |
CardView | 간편하고 안정적 | 그림자 제거가 어려움 |
💬 마무리하며
안드로이드에서 둥근 모서리와 배경색을 적용하는 방법은 다양하지만, 상황에 따라 적절한 방법을 선택하는 것이 중요합니다. 위 예제를 직접 따라해보면서 다양한 UI를 만들어보세요!
궁금한 점이나 안 되는 부분이 있다면 댓글로 질문 남겨주세요 😊
'안드로이드' 카테고리의 다른 글
[안드로이드] 상황별 코틀린 영역 함수(Scope function) 사용법, 예시코드 (0) | 2025.01.24 |
---|---|
[안드로이드] 현업에서 유용한 코틀린 확장함수(extension function) 예시 총 정리 (0) | 2025.01.15 |
안드로이드 ImageView 리플 효과 문제점 해결법 총 정리 - 이미지 아래에 리플효과가 깔리는 문제, 리플효과가 뷰 외곽까지 번지는 문제 (0) | 2025.01.13 |
안드로이드 리플 (Ripple) 완벽 가이드 - 개념, 사용법, 커스텀, 예제코드,주의점 (0) | 2025.01.13 |
[안드로이드] 접근성 - TalkBack 구현 방법 총 정리(contentDescription 설정, announceForAccessibility함수 사용) (0) | 2025.01.08 |
댓글