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

时间:2011-04-11 07:58:40

标签: android android-edittext textview

我需要在Android UI中绘制一个圆角矩形。 <{1}}和TextView具有相同的圆角矩形也会有所帮助。

9 个答案:

答案 0 :(得分:178)

在你的布局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,您可以更改角落的“舍入”量。

答案 1 :(得分:112)

我想,这是你真正需要的。

这里创建圆角矩形的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>

- &GT;在上面的代码中,LinearLayout具有背景(这是创建圆角矩形的关键角色)。 因此,您可以在该LinearLayout中放置任何视图,如TextView,EditText ...,将背景视为所有人的圆角矩形。

答案 2 :(得分:19)

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



       }  
    }
}

答案 3 :(得分:3)

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

在drawable中创建一个名为&#34; custom_round_ui_shape&#34;

的新XML

答案 4 :(得分:1)

如果要将圆角矩形用作TextView和EditText的背景,则应使用自定义背景。您需要使用形状组件来获取更多信息,请阅读此问题Using shape drawable as my background xml

答案 5 :(得分: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" />

答案 6 :(得分: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"/>

答案 7 :(得分:0)

CardView 用于圆角矩形。 CardView提供了更多功能,例如cardCornerRadius,cardBackgroundColor,cardElevation等。 CardView使UI比自定义圆形矩形可绘制更合适。

答案 8 :(得分: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>