Ich muss ein abgerundetes Rechteck in der Benutzeroberfläche von Android=) zeichnen. Es wäre auch hilfreich, dasselbe abgerundete Rechteck für TextView
und EditText
zu haben.
Gehen Sie in Ihrem Layout-XML wie folgt vor:
<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>
Durch Ändern des Radius von Android: können Sie den Grad der "Abrundung" der Ecken ändern.
Ich denke, das ist genau das, was du brauchst.
Hier zeichnende (xml) Datei, die ein abgerundetes Rechteck erzeugt. 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>
hier Layoutdatei: 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>
-> Im obigen Code hat LinearLayout den Hintergrund (das ist die Schlüsselrolle, die beim Erstellen eines abgerundeten Rechtecks zu spielen ist). Sie können also jede Ansicht wie TextView, EditText ... in dieses LinearLayout einfügen, um den Hintergrund als rundes Rechteck für alle anzuzeigen.
In monodroid
können Sie dies für abgerundete Rechtecke tun und diese dann als übergeordnete Klasse beibehalten. editbox
und andere Layoutfunktionen können hinzugefügt werden.
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>
Nun, in welchem Element möchten Sie diese Form verwenden, fügen Sie einfach hinzu: Android:background="@drawable/custom_round_ui_shape"
Erstellen Sie eine neue XML-Datei mit dem Namen "custom_round_ui_shape".
Wenn Sie das abgerundete Rechteck als Hintergrund für TextView und EditText verwenden möchten, sollten Sie einen benutzerdefinierten Hintergrund verwenden. Sie müssen die Formkomponente dafür verwenden, um weitere Informationen zu erhalten. Lesen Sie diese Frage Verwenden der als Hintergrund xml darstellbaren Form
Klicken Sie mit der rechten Maustaste auf die Zeichenfläche und erstellen Sie eine neue Layout-XML-Datei mit dem Namen "button_background.xml". Kopieren Sie dann den folgenden Code und fügen Sie ihn ein. Sie können es nach Bedarf ändern.
<?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>
Jetzt kannst du es benutzen.
<Button
Android:background="@drawable/button_background"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"/>