如何在Android UI中绘制圆角矩形?


Answers:


215

在布局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:bottomLeftRadiusandroid:bottomRightRadiusandroid:topLeftRadiusandroid:topRightRadius定义半径每个角落。


他们没有要求渐变。不知道为什么要接受这个答案。
杰里·德斯特伦斯

我猜它被接受了,因为它在大多数其他答案之前还有几个月。我多年没有做过Android开发,所以我不知道现在如何更改或更新答案以删除渐变,尽管我猜想Noundla Sandeep在下面的回复中使用的“ solid”标签可能会做到诀窍。
安德瑞斯(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 2013年

您可以用这种方法使任何形状变圆!
SabriMeviş18年

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比自定义圆形矩形可绘制更合适。


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

右键单击可绘制对象,并以例如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>

请提供一些解释,以你的答案
可执行
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.