안드로이드 스튜디오 버튼 테두리 - andeuloideu seutyudio beoteun teduli

drawable 폴더 > button_button01.xml

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item>

<layer-list>

<!-- shadow (밑으로) : 그림자 -->

<item android:top="3dp">

<shape>

<corners android:radius="3dp" />

<solid android:color="#1f000000" />

</shape>

</item>

<!-- background (위로) -->

<item android:bottom="3dp">

<shape>

<corners android:radius="3dp" /

<solid android:color="#00854a" />

<stroke android:width="1dp" android:color="#6a6a6a" />

</shape>

</item>

</layer-list>

</item>

</selector>

cs

버튼을 커스텀 한다

<layer-list>태그 밑에 <item>태그 2개를 넣어서 하나는 버튼의 배경과 테두리를 다른하나는 그림자를 만든다

커스텀하고자 하는 버튼의 background 속성에 사용

<!-- 버튼 -->

<Button

android:text="버튼"

android:textColor="#fff"

android:textSize="16dp"

android:background="@drawable/button_button1"

android:layout_gravity="center_vertical"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

<!-- //버튼 -->

cs

결과

안드로이드 스튜디오 버튼 테두리 - andeuloideu seutyudio beoteun teduli


이번 글에서는 안드로이드 기본 위젯인 버튼의 모서리를 둥글게 만들어 보겠습니다.

아래 그림과 같이 drawable을 우클릭하여 Drawable Resource File을 선택합니다.

안드로이드 스튜디오 버튼 테두리 - andeuloideu seutyudio beoteun teduli

그 다음 아래와 같이 round_button, selector를 입력하신 뒤 OK 버튼을 누릅니다.

안드로이드 스튜디오 버튼 테두리 - andeuloideu seutyudio beoteun teduli

위 작업을 모두 수행 하셨다면 아래 그림과 같이 round_button.xml이 생성됩니다.

안드로이드 스튜디오 버튼 테두리 - andeuloideu seutyudio beoteun teduli

round_button.xml에 아래와 같이 코딩합니다.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- 평상시 -->
    <item android:state_pressed="false">
        <shape>
            <!-- 배경 -->
            <solid android:color="#ffffffff" />
            <!-- 테두리 -->
            <stroke
                android:width="1dp"
                android:color="#ffaaaaaa" />
            <corners
                android:bottomLeftRadius="30dp"
                android:bottomRightRadius="30dp"
                android:topLeftRadius="30dp"
                android:topRightRadius="30dp" />
        </shape>
    </item>

    <!-- 클릭했을 때 -->
    <item android:state_pressed="true">
        <shape>
            <!-- 배경 -->
            <solid android:color="#ff000000" />
            <!-- 테두리 -->
            <stroke
                android:width="1dp"
                android:color="#ff888888" />
            <!-- 코너 둥근 정도 -->
            <corners
                android:bottomLeftRadius="30dp"
                android:bottomRightRadius="30dp"
                android:topLeftRadius="30dp"
                android:topRightRadius="30dp" />
        </shape>
    </item>
</selector>

android:state_pressed에서 true, false로 눌린 상태인지, 눌리지 않은 상태를 구분합니다.

activity_main.xml로 이동해서 아래와 같이 Button을 입력합니다.

android:background를 부분에 방금 만든 round_button.xml을 입력합니다.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="button"
        android:background="@drawable/round_button"/> <!-- round_button 입력 -->

</androidx.constraintlayout.widget.ConstraintLayout>

실행시켜 확인해봅니다.

안드로이드 스튜디오 버튼 테두리 - andeuloideu seutyudio beoteun teduli

만약 버튼의 색상이 변하지 않는다면 테마에 Theme.AppCompat.Light.NoActionBar 속성을 줍니다.

안드로이드 스튜디오 버튼 테두리 - andeuloideu seutyudio beoteun teduli