Android kullanıcı arayüzünde yuvarlatılmış dikdörtgen nasıl çizilir?


142

Android kullanıcı arayüzünde yuvarlatılmış bir dikdörtgen çizmem gerekiyor. Aynı yuvarlatılmış dikdörtgene sahip olmak TextViewve EditTextayrıca yardımcı olacaktır.



en azından resmi koymalısın .. çünkü birisi aynı soruyu arıyorsa anlaması kolay olacak.
Himanshu Mori

Yanıtlar:


216

Düzeninizde xml şunları yapın:

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

Değiştirerek android:radiusEğer köşelerinden "radius" miktarını değiştirebilir.

<solid> Çekmecenin rengini tanımlamak için kullanılır.

Sen yerini kullanabilirsiniz android:radiusile android:bottomLeftRadius, android:bottomRightRadius, android:topLeftRadiusve android:topRightRadiusher köşe için yarıçapı tanımlamak için.


Gradyan istemediler. Bunun neden kabul edildiğini bilmiyorum.
Jerry Destremps

Sanırım kabul edildi çünkü diğer cevapların çoğundan birkaç ay önce vardı. Yıllardır herhangi bir Android geliştirme yapmadım, bu yüzden Noundla Sandeep'in aşağıdaki cevabında kullanılan "katı" etiketi muhtemelen tahmin ediyorum, ancak cevabı kaldırmak için cevabın şimdi nasıl değiştirilebileceği veya güncellenebileceği hakkında hiçbir fikrim yok Numara.
Andreass

125

Sanırım, tam olarak buna ihtiyacın var.

Burada yuvarlatılmış dikdörtgen oluşturan çekilebilir (xml) dosya. 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>

İşte düzen dosyası: 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>

-> Yukarıdaki kodda, LinearLayout arka plana sahip (Yuvarlatılmış dikdörtgen oluşturmak için yerleştirilecek anahtar rol budur). Böylece arka planı herkes için yuvarlak dikdörtgen olarak görmek üzere TextView, EditText ... gibi herhangi bir görünümü o LinearLayout'a yerleştirebilirsiniz.


1
Bunu soyutlamanın bir yolu var mı? android:background="@drawable/round_rect_shape"Benim styles.xml içinde kullanmak istiyorum, ama başka bir özellik ayarlayarak farklı arka plan renkleri kullanmak istiyorum. Her renk için özdeş bir çizilebilir oluşturmak dışında herhangi bir seçenek var mı?
karl

Bu şekilde yuvarlatılmış herhangi bir şekil yapabilirsiniz!
Sabri Meviş

22

İçinde monodroid, bunu yuvarlatılmış dikdörtgen için yapabilir ve daha sonra bunu üst sınıf olarak tutabilirsiniz editboxve diğer düzen özellikleri eklenebilir.

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



       }  
    }
}

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

Şimdi, bu şekli hangi öğeyi kullanmak istediğinizi ekleyin: android:background="@drawable/custom_round_ui_shape"

"Custom_round_ui_shape" adlı çekmecede yeni bir XML oluşturun


1

Yuvarlak Dikdörtgen için CardView kullanın . CardView, cardCornerRadius, cardBackgroundColor, cardElevation ve daha pek çok işlevsellik kazandırır. CardView, Kullanıcı Arabirimini Özel Yuvarlak Dikdörtgen'den daha uygun hale getirir.


1

Drawables klasöründe yeni bir xml arka planı tanımlayabilirsiniz

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

Bundan sonra bunu arka planda tanımlayarak TextView veya EditText'e ekleyin.

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

0

Draw_back üzerine sağ tıklayın ve örneğin button_background.xml adına yeni düzen xml dosyası oluşturun. sonra aşağıdaki kodu kopyalayıp yapıştırın. İhtiyacınıza göre değiştirebilirsiniz.

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

Şimdi kullanabilirsiniz.

<Button
android:background="@drawable/button_background"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

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>

Lütfen cevabınıza biraz açıklama yapın
yürütülebilir
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.