Как нарисовать закругленный прямоугольник в Android UI?


мне нужно нарисовать закругленный прямоугольник в пользовательском интерфейсе Android. Имея тот же закругленный прямоугольник для TextView и EditText также было бы полезно.

5 103

5 ответов:

в вашем макете xml выполните следующие действия:

   <shape xmlns:android="http://schemas.android.com/apk/res/android">
         <gradient
            android:endColor="@color/something"
            android:centerColor="@color/something_else"
            android:startColor="@color/something_else_still"
            android:angle="270" />
        <corners
            android:radius="3dp" />
        <padding
            android:left="10dp"
            android:top="10dp"
            android:right="10dp"
            android:bottom="10dp" />
    </shape>

изменяя android: radius вы можете изменить количество "округления" углов.

Я думаю, это вам точно нужен.

здесь 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 имеет фон (это ключевая роль для создания скругленного прямоугольника). Таким образом, вы можете разместить любое представление, такое как TextView, EditText... в этом краю, чтобы увидеть фон как круглый прямоугольник все.

на 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);



       }  
    }
}
<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"

создать новый XML в drawable с именем "custom_round_ui_shape"

Если вы хотите использовать закругленный прямоугольник в качестве фона для TextView и EditText, вы должны использовать пользовательский фон. Вам нужно использовать компонент shape для этого для получения дополнительной информации прочитайте этот вопрос использование формы drawable в качестве моего фона xml