Devo disegnare un rettangolo arrotondato nell'interfaccia utente di Android. Avere lo stesso rettangolo arrotondato per TextView
e EditText
sarebbe anche utile.
Devo disegnare un rettangolo arrotondato nell'interfaccia utente di Android. Avere lo stesso rettangolo arrotondato per TextView
e EditText
sarebbe anche utile.
Risposte:
Nel layout xml, procedi come segue:
<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>
Modificando android:radius
è possibile modificare la quantità di "raggio" degli angoli.
<solid>
è usato per definire il colore del disegno.
È possibile utilizzare sostituirlo android:radius
con android:bottomLeftRadius
, android:bottomRightRadius
, android:topLeftRadius
e android:topRightRadius
per definire il raggio per ogni angolo.
Penso che questo sia esattamente necessario.
Qui file disegnabile (xml) che crea un rettangolo arrotondato. 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>
Qui file di layout: 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>
-> Nel codice sopra, LinearLayout ha lo sfondo (Questo è il ruolo chiave da posizionare per creare un rettangolo arrotondato). Quindi puoi posizionare qualsiasi vista come TextView, EditText ... in quel LinearLayout per vedere lo sfondo come rettangolo rotondo per tutti.
android:background="@drawable/round_rect_shape"
nel mio styles.xml, ma di utilizzare colori di sfondo diversi impostando un'altra proprietà. C'è qualche opzione, tranne la creazione di un disegno identico per ogni colore?
In monodroid
, puoi fare così per il rettangolo arrotondato, e quindi mantenerlo come una classe genitore editbox
e aggiungere altre funzionalità di layout.
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>
Ora, in quale elemento vuoi usare questa forma basta aggiungere:
android:background="@drawable/custom_round_ui_shape"
Crea un nuovo XML in un disegno chiamato "custom_round_ui_shape"
Usa CardView per Round Rectangle. CardView offre più funzionalità come cardCornerRadius, cardBackgroundColor, cardElevation e molti altri. CardView rende l'interfaccia utente più adatta rispetto al disegno personalizzato Rettangolo rotondo.
Puoi semplicemente definire un nuovo sfondo XML nella cartella dei disegni
<?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>
Dopodiché è sufficiente includerlo in TextView o EditText definendolo in background.
<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" />
Fai clic con il pulsante destro del mouse sul disegno e crea un nuovo file xml di layout, ad esempio button_background.xml. quindi copia e incolla il seguente codice. Puoi cambiarlo secondo le tue necessità.
<?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>
Ora puoi usarlo.
<Button
android:background="@drawable/button_background"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<?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>