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.
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.
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.
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);
}
}
}
<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"
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
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"/>