xml을 사용하여 색상 드로어 블의 둥근 모서리 반경을 어떻게 설정합니까?


108

안드로이드 웹 사이트에는 컬러 드로어 블에 대한 섹션이 있습니다. 이러한 드로어 블을 xml로 정의하는 것은 다음과 같습니다.

<resources>
    <drawable name="solid_red">#f00</drawable>
    <drawable name="solid_blue">#0000ff</drawable>
    <drawable name="solid_green">#f0f0</drawable>
</resources>

자바 API에서는 둥근 모서리를 정의하는 다음과 같은 방법이 있습니다.

setCornerRadius(float radius)

xml에서 둥근 모서리를 설정하는 방법이 있습니까?


코드에서 모서리를 설정하려면 (Gradient Drawables) : stackoverflow.com/questions/8709595/…를
samis

답변:


319

사용 <shape>모서리가 둥근 XML에서 드로어 블을 만들 태그를. (색상 그래디언트 정의와 같은 모양 태그로 다른 작업을 수행 할 수도 있습니다).

다음은 흰색 배경, 검은 색 테두리 및 둥근 모서리가있는 드로어 블을 만들기 위해 내 앱 중 하나에서 사용중인 XML 파일의 복사본입니다.

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#ffffffff"/>    
             
    <stroke android:width="3dp"
            android:color="#ff000000" />

    <padding android:left="1dp"
             android:top="1dp"
             android:right="1dp"
             android:bottom="1dp" /> 
             
    <corners android:radius="7dp" /> 
</shape>

1
어디에서이 파일을 저장하는 내 자바 코드에서 그것을 얻는 방법 덕분?
시암

7
드로어 블 디렉터리에 xml 파일로 저장 한 다음 리소스 이름 (R.drawable.your_xml_name)을 사용하여 드로어 블 (아이콘 또는 리소스 파일)을 사용하는 것처럼 사용하십시오.
Guillaume

30
당신이 안드로이드 사용할 수도 있도록이 특별한 경우에 모든 반경은 동일합니다 : 반경 = "7dp"
윌 크루

2
또한 Android Studio의 레이아웃 렌더러는 반경을 별도로 정의하면 (동일한 값으로도) 렌더링 할 수 없으며 "Pat.isConvex가 지원되지 않습니다."라는 경고를 표시합니다. <corners android : radius = "7dp"/> 사용
Francesco Ambrosini

@shyam "배경"으로 설정할 수 있습니다. TextView에서 사용하는 경우 시작과 끝 부분에 패딩을 추가하여 텍스트가 둥근 모서리로 붐비지 않도록해야합니다
RowanPD

19

mbaird의 대답은 잘 작동합니다. Android (적어도 2.1)에 버그가있는 것 같습니다. 개별 코너의 반경을 0으로 설정하면 모든 코너가 0으로 강제 설정됩니다 (적어도 "dp"단위의 경우입니다. 다른 장치와 함께 시도하지 마십시오).

나는 상단 모서리가 둥글고 하단 모서리가 정사각형 인 모양이 필요했습니다. 정사각형이되고 싶은 모서리를 0 : 0.1dp보다 약간 큰 값으로 설정하여이를 달성했습니다. 이것은 여전히 ​​정사각형 모서리로 렌더링되지만 다른 모서리가 0 반경이되도록 강제하지는 않습니다.


방금 0.1dp를 작성 했습니까? 작동합니까, 나는 또한 상단 둥근 모서리와 하단 사각형 모서리가 필요합니다. 방금 1dp, 사각형 모서리 및 둥근 모서리에 10dp를 사용한 것과 동일한 문제, u 맞아요. 원합니다. 문서 설정에 따라 둥근 모서리에 0이 작동 했어야합니다.
codeScriber

실제로, 그것은 문서의 버그 아니에요 : developer.android.com/guide/topics/resources/...
Tsuharesu

1

아래 코드를 시도하십시오

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners
    android:bottomLeftRadius="30dp"
    android:bottomRightRadius="30dp"
    android:topLeftRadius="30dp"
    android:topRightRadius="30dp" />
<solid android:color="#1271BB" />

<stroke
    android:width="5dp"
    android:color="#1271BB" />

<padding
    android:bottom="1dp"
    android:left="1dp"
    android:right="1dp"
    android:top="1dp" /></shape>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.