web-dev-qa-db-fra.com

Comment dessiner un rectangle arrondi dans Android UI?

J'ai besoin de dessiner un rectangle arrondi dans le Android UI. Avoir le même rectangle arrondi pour TextView et EditText serait également utile.

122
M.A.Murali

Dans votre mise en page XML, procédez comme suit:

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

En modifiant le rayon Android: rayon, vous pouvez modifier le "arrondi" des angles.

182
Andreass

Je pense que c'est exactement ce dont vous avez besoin.

Voici un fichier dessinable (xml) qui crée un rectangle arrondi. 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>

ici le fichier de mise en page: 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>

-> Dans le code ci-dessus, LinearLayout ayant l’arrière-plan (c’est le rôle clé à jouer pour créer un rectangle arrondi). Vous pouvez donc placer n'importe quelle vue telle que TextView, EditText ... dans LinearLayout pour voir l'arrière-plan comme un rectangle arrondi.

117
Noundla Sandeep

Dans monodroid, vous pouvez faire comme ceci pour un rectangle arrondi, puis en gardant cela comme classe parent, vous pouvez ajouter editbox et d’autres fonctionnalités de présentation.

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



       }  
    }
}
19
learn_andrd
<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>

Maintenant, dans quel élément vous voulez utiliser cette forme, ajoutez simplement: Android:background="@drawable/custom_round_ui_shape"

Créer un nouveau fichier XML appelé "custom_round_ui_shape"

4
Uttam Meerwal

Si vous souhaitez utiliser le rectangle arrondi comme arrière-plan pour TextView et EditText, vous devez utiliser un arrière-plan personnalisé. Vous devez utiliser le composant de forme pour cela pour plus d’informations, lisez cette question tilisation d’une forme pouvant être dessinée comme fond xml

1
Mojo Risin

Cliquez avec le bouton droit sur le dessin et créez un nouveau fichier XML de mise en page au nom, par exemple, de button_background.xml. puis copiez et collez le code suivant. Vous pouvez le changer en fonction de vos besoins.

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

Maintenant, vous pouvez l'utiliser.

<Button
Android:background="@drawable/button_background"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"/>
0
M Karimi