Android UI에서 둥근 사각형을 그리는 방법은 무엇입니까?


142

Android UI에서 둥근 사각형을 그려야합니다. 에 대해 동일한 모서리가 둥근 직사각형을 갖는 TextView하고하는 EditText것도 도움이 될 것입니다.


이 토론을 살펴보십시오 stackoverflow.com/questions/3646415/…
Kartik Domadiya

누군가가 같은 질문을 찾고 있다면 이해하기 쉽기 때문에 적어도 그림을 넣어야합니다.
Himanshu Mori

답변:


216

레이아웃 xml에서 다음을 수행하십시오.

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

    <solid android:color="@android:color/holo_red_dark" />

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

</shape>

를 변경 android:radius하면 모서리의 "반경"양을 변경할 수 있습니다.

<solid> 드로어 블의 색상을 정의하는 데 사용됩니다.

당신은 대체 사용할 수 있습니다 android:radiusandroid:bottomLeftRadius, android:bottomRightRadius, android:topLeftRadiusandroid:topRightRadius각 코너 반지름을 정의 할 수 있습니다.


그들은 그라디언트를 요구하지 않았습니다. 이것이 왜 받아 들여 지는지 모릅니다.
Jerry Destremps 19

다른 답변의 대부분이 몇 달 전에 있었기 때문에 받아 들였습니다. 나는 몇 년 동안 안드로이드 개발을 해본 적이 없기 때문에 그라디언트를 제거하기 위해 답변을 어떻게 변경하거나 업데이트 할 수 있는지 전혀 모른다. 트릭.
Andreass

125

나는 이것이 당신이 정확히 필요하다고 생각합니다.

둥근 사각형을 만드는 drawable (xml) 파일입니다. round_rect_shape.xml

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

    <solid android:color="#ffffff" />

    <corners
        android:bottomLeftRadius="8dp"
        android:bottomRightRadius="8dp"
        android:topLeftRadius="8dp"
        android:topRightRadius="8dp" />

</shape>

여기 레이아웃 파일 : my_layout.xml

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/round_rect_shape"
    android:orientation="vertical"
    android:padding="5dp" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Something text"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#ff0000" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <requestFocus />
    </EditText>
</LinearLayout>

-> 위 코드에서 배경이있는 LinearLayout (둥근 사각형을 만드는 것이 핵심 역할입니다). 따라서 해당 LinearLayout에 TextView, EditText ...와 같은 뷰를 배치하여 배경을 모두 둥근 사각형으로 볼 수 있습니다.


1
이것을 추상화하는 방법이 있습니까? android:background="@drawable/round_rect_shape"styles.xml에서 사용할 수 있지만 다른 속성을 설정하여 다른 배경색 을 사용 하고 싶습니다. 각 색상에 대해 동일한 드로어 블을 만드는 것 외에 다른 옵션이 있습니까?
karl

이 방법으로 둥근 모양을 만들 수 있습니다!
Sabri Meviş 2016 년

22

에서 monodroid둥근 사각형에 대해 이와 같이 수행 한 다음이를 부모 클래스로 유지하면 editbox다른 레이아웃 기능을 추가 할 수 있습니다.

 class CustomeView : TextView
    {
       public CustomeView (Context context, IAttributeSet ) : base (context, attrs)  
        {  
        }
       public CustomeView(Context context, IAttributeSet attrs, int defStyle) : base(context, attrs, defStyle)  
        {  
        }
       protected override void OnDraw(Android.Graphics.Canvas canvas)
       {
           base.OnDraw(canvas);
           Paint p = new Paint();
           p.Color = Color.White;
           canvas.DrawColor(Color.DarkOrange);

           Rect rect = new Rect(0,0,3,3);

           RectF rectF = new RectF(rect);


           canvas.DrawRoundRect( rectF, 1,1, p);



       }  
    }
}

4
<shape xmlns:android="http://schemas.android.com/apk/res/android"
  android:padding="10dp"
  android:shape="rectangle">
    <solid android:color="@color/colorAccent" /> 
    <corners
      android:bottomLeftRadius="500dp"
      android:bottomRightRadius="500dp"
      android:topLeftRadius="500dp"
      android:topRightRadius="500dp" />
</shape>

이제이 모양을 사용하려는 요소에 다음을 추가하십시오. android:background="@drawable/custom_round_ui_shape"

"custom_round_ui_shape"라는 드로어 블에 새 XML을 만듭니다.


1

둥근 사각형에 CardView 를 사용하십시오 . CardView는 cardCornerRadius, cardBackgroundColor, cardElevation 등과 같은 더 많은 기능을 제공합니다. CardView는 UI를 Custom Round Rectangle drawable보다 더 적합하게 만듭니다.


1

drawables 폴더에 새로운 XML 배경을 정의 할 수 있습니다.

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="enter_your_desired_color_here" />
<corners android:radius="enter_your_desired_radius_the_corners" />
</shape>  

그런 다음 백그라운드에서 정의하여 TextView 또는 EditText에 포함하십시오.

<TextView
 android:id="@+id/textView"
 android:layout_width="0dp"
 android:layout_height="80dp"
 android:background="YOUR_FILE_HERE"
 Android:layout_weight="1"
 android:gravity="center"
 android:text="TEXT_HERE"
 android:textSize="40sp" />

0

drawable을 마우스 오른쪽 버튼으로 클릭하고 예를 들어 button_background.xml과 같은 이름으로 새 레이아웃 xml 파일을 만듭니다. 다음 코드를 복사하여 붙여 넣습니다. 필요에 따라 변경할 수 있습니다.

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:radius="14dp" />
<solid android:color="@color/colorButton" />
<padding
android:bottom="0dp"
android:left="0dp"
android:right="0dp"
android:top="0dp" />
<size
android:width="120dp"
android:height="40dp" />
</shape>

이제 사용할 수 있습니다.

<Button
android:background="@drawable/button_background"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

0
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@android:color/white" />
    <corners android:radius="4dp" />
</shape>

답변에 대한 설명을 입력하십시오
실행 파일
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.