Pojok bulat untuk tampilan teks di android

171

Saya memiliki tampilan teks dan ingin sudutnya berbentuk bulat. Saya sudah tahu itu bisa dilakukan menggunakan android:background="@drawable/somefile". Dalam kasus saya, tag ini sudah disertakan sehingga tidak dapat digunakan lagi. misalnya android:background="@drawable/mydialogbox"sudah ada untuk membuat gambar di latar belakang

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_gravity="top"
    android:background="@drawable/mydialogbox"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/textview_name"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />

    </LinearLayout>

</RelativeLayout>

jadi ketika saya mau textview(textview_name)juga dengan sudut bulat, bagaimana ini bisa dicapai.

Sanjeev Yadav
sumber
4
jika Anda sudah mendapatkan jawaban Anda daripada menerima jawaban sehingga orang lain bisa mendapatkan bantuan dari kontribusi Anda
MilapTank

Jawaban:

438

1) Buat rounded_corner.xmldi drawablefolder dan tambahkan konten berikut,

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >         
   <stroke
          android:width="1dp"
          android:color="@color/common_border_color" />

   <solid android:color="#ffffff" />

   <padding
           android:left="1dp"
           android:right="1dp"
           android:bottom="1dp"
           android:top="1dp" />

   <corners android:radius="5dp" />
</shape>

2) Setel drawable ini di TextViewproperti background. Sebagai contoh:

android:background="@drawable/rounded_corner"

Semoga ini bermanfaat buat kamu.

dipali
sumber
16
Jawabannya benar hanya bahwa pria yang diposting tidak menjelaskannya secara detail. Anda perlu membuat xml [mis. rounded_view.xml] di folder yang dapat digambar dengan kode di atas. Dan dalam tata letak Anda di sekitar tampilan teks Anda, letakkan ini sebagai parameter android: background = "@ drawable / rounded_view"
Sharjeel Ahmed
4
android: background = "@ drawable / rounded_corner" jangan gunakan ekstensi di sini!
Boris Gafurov
4
Tambahkan android:shape="rectangle"jika itu tidak berhasil untuk Anda
kristyna
Dan
bangun
18

Di samping radius, ada beberapa properti untuk sudut bulat seperti topRightRadius, topLeftRadius, bottomRightRadius,bottomLeftRadius

Contoh TextViewdengan latar belakang abu-abu redperbatasanwith corner and

bg_rounded.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke
        android:width="10dp"
        android:color="#f00" />

    <solid android:color="#aaa" />

    <corners
        android:radius="5dp"
        android:topRightRadius="100dp" />
</shape>

TextView

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/bg_rounded"
    android:text="Text"
    android:padding="20dp"
    android:layout_margin="10dp"
    />

Hasil

masukkan deskripsi gambar di sini

Phan Van Linh
sumber
16

Karena tampilan tingkat atas Anda sudah memiliki set properti android: latar belakang, Anda dapat menggunakan <layer-list>( tautan ) untuk membuat drawable XML baru yang menggabungkan latar belakang lama Anda dan latar belakang sudut bulat baru Anda.

Setiap <item>elemen dalam daftar diambil dari yang berikutnya, sehingga item terakhir dalam daftar adalah yang berakhir di atas.

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <bitmap android:src="@drawable/mydialogbox" />
    </item>
    <item>
        <shape>
            <stroke
                android:width="1dp"
                android:color="@color/common_border_color" />

            <solid android:color="#ffffff" />

            <padding
                    android:left="1dp"
                    android:right="1dp"
                    android:top="1dp" />

            <corners android:radius="5dp" />
        </shape>
    </item>
</layer-list>
panda preoccu
sumber
6

buat file xml gradient.xml di bawah folder drawable

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle"  >
            <corners android:radius="50dip" />
            <stroke android:width="1dip" android:color="#667162" />
            <gradient android:angle="-90" android:startColor="#ffffff" android:endColor="#ffffff" />
        </shape>
    </item>
</selector>

kemudian tambahkan ini ke TextView Anda

android:background="@drawable/gradient"
Sourav Roy
sumber
6
  1. Klik kanan pada Drawable Folder dan Buat File baru
  2. Beri nama file sesuai dengan Anda dan tambahkan ekstensi sebagai .xml .
  3. Tambahkan kode berikut dalam file
  <?xml version="1.0" encoding="utf-8"?>
  <shape xmlns:android="http://schemas.android.com/apk/res/android"
      android:shape="rectangle">
      <corners android:radius="5dp" />
      <stroke android:width="1dp"  />
      <solid android:color="#1e90ff" />
  </shape>
  1. Tambahkan garis di mana Anda ingin tepi membulat android:background="@drawable/corner"
Ashishkumar Mouria
sumber
4

Anda dapat menggunakan bentuk persegi panjang yang disediakan (tanpa gradien, kecuali jika Anda menginginkannya) sebagai berikut:

Di drawable/rounded_rectangle.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="5dp" />
    <stroke android:width="1dp" android:color="#ff0000" />
    <solid android:color="#00ff00" />
</shape>

Kemudian dalam tampilan teks Anda:

android:background="@drawable/rounded_rectangle"

Tentu saja, Anda ingin menyesuaikan dimensi dan warna.

Tad
sumber
4

Ada dua langkah

1) Buat file ini di folder yang dapat digambar: - rounded_corner.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
         <corners android:radius="10dp" />  // set radius of corner
         <stroke android:width="2dp" android:color="#ff3478" /> // set color and width of border
         <solid android:color="#FFFFFF" /> // inner bgcolor
</shape>

2) Setel file ini ke TextViewproperti Anda sebagai latar belakang.

android:background="@drawable/rounded_corner"

Anda dapat menggunakan gambar ini di Button atau Edittext juga

Sanjayrajsinh
sumber
3
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="5dp" />
            <solid android:color="#ffffff"/>

        </shape>
    </item>
</layer-list>
goonerDroid
sumber
3

Dengan Perpustakaan Komponen Bahan Anda dapat menggunakan MaterialShapeDrawable.

Dengan TextView:

    <TextView
        android:id="@+id/textview"
        ../>

Anda dapat menerapkan MaterialShapeDrawable:

float radius = getResources().getDimension(R.dimen.corner_radius);

TextView textView = findViewById(R.id.textview);
ShapeAppearanceModel shapeAppearanceModel = new ShapeAppearanceModel()
        .toBuilder()
        .setAllCorners(CornerFamily.ROUNDED,radius)
        .build();

MaterialShapeDrawable shapeDrawable = new MaterialShapeDrawable(shapeAppearanceModel);
ViewCompat.setBackground(textView,shapeDrawable);

masukkan deskripsi gambar di sini

Jika Anda ingin mengubah warna latar dan batas hanya berlaku:

shapeDrawable.setFillColor(ContextCompat.getColorStateList(this,R.color.....));
shapeDrawable.setStroke(2.0f, ContextCompat.getColor(this,R.color....));
Gabriele Mariotti
sumber
0

Anda bisa menggunakan SVG untuk membulatkan sudut dan memuat ke dalam ImageView dan menggunakan ConstraintLayout untuk membawa ImageView pada TextView

Saya menggunakannya untuk ImageView bulat dan TextView bulat

Omid Farvid
sumber
0

Cukup menggunakan gambar sudut bulat karena latar belakang tampilan itu akan membuatnya begitu.

android:background="@drawable/my_custom_image"
Biplob Das
sumber