Ini tidak berhasil. seperti yang telah Anda tentukan, itu adalah latar belakangnya, sehingga konten menimpa sudut-sudut yang bulat, dan jika Anda memiliki konten yang menarik di sudut-sudutnya, Anda tidak akan melihatnya dibulatkan.
pengembang android
22
Hampir selalu, konten saya tidak pernah mencakup sudut. Ini bekerja dengan sempurna.
David JY Tang
2
Bagaimana Anda menghindari kesalahan Element shape doesn't have the required attribute android:layout_height?
Lorenz
2
Element shape doesn't have the required attribute android:layout_heightAlasan kesalahan ditampilkan karena layout_bg.xml tidak ada di dalam folder drawable.
Atul
8
@ nhouser9: sebenarnya ini lebih seperti "Berhasil, tetapi berhati-hatilah bahwa latar depan / konten Anda mungkin menarik di sudut". Jadi tergantung pada kasus penggunaannya mungkin 100% berfungsi. Saya senang jawabannya belum begitu banyak downvotes karena berguna, dan saya senang bahwa komentar memiliki seratus upvotes karena mudah untuk menemukan batasan dengan solusi ini. Terbaik dari kedua dunia.
Benoit Duffez
125
Untuk API 21+, Gunakan Tampilan Klip
Kliping garis bundar ditambahkan ke Viewkelas di API 21. Lihat dokumen pelatihan ini atau referensi ini untuk informasi lebih lanjut.
Fitur bawaan ini membuat sudut bundar sangat mudah diimplementasikan. Ini berfungsi pada tampilan atau tata letak apa pun dan mendukung kliping yang tepat.
Inilah Yang Harus Dilakukan:
Buat bentuk bulat yang dapat digambar dan atur sebagai latar belakang tampilan Anda:
android:background="@drawable/round_outline"
Menurut dokumentasi, maka yang perlu Anda lakukan adalah ini: android:clipToOutline="true"
Sayangnya, tampaknya ada bug dan atribut XML ini saat ini tidak dikenali. Untungnya, kita dapat mengatur kliping di Jawa:
Dalam aktivitas atau fragmen Anda: View.setClipToOutline(true)
Seperti apa rupanya:
Catatan Khusus Tentang ImageViews
setClipToOutline()hanya berfungsi ketika latar belakang Tampilan diatur ke bentuk yang dapat digambar. Jika bentuk latar belakang ini ada, Lihat memperlakukan garis besar latar belakang sebagai batas untuk kliping dan tujuan bayangan.
Ini berarti bahwa jika Anda ingin membulatkan sudut pada ImageView dengan setClipToOutline(), gambar Anda harus berasal android:srcalih-alih android:background(karena latar belakang digunakan untuk bentuk bulat). Jika Anda HARUS menggunakan latar belakang untuk mengatur gambar Anda alih-alih src, Anda dapat menggunakan solusi tampilan bersarang ini:
Buat tata letak luar dengan latar belakangnya diatur agar bentuk Anda dapat digambar
Bungkus tata letak itu di sekitar ImageView Anda (tanpa bantalan)
ImageView (termasuk yang lainnya di tata letak) sekarang akan dipotong ke bentuk bulat tata letak luar.
Tidak bekerja di API kurang dari 21. Tidak bisa menunggu sampai saya hanya dapat mendukung API 21.
startoftext
Menggunakan 'setClipToOutline' berfungsi, tetapi juga menghapus frame itu sendiri (yang dapat Anda gunakan untuk latar belakang). Apakah ada cara untuk menghindari hal ini?
pengembang android
Apakah Anda membaca catatan saya tentang penggunaan src=@drawable...bukan background=@drawable? Anda bisa melakukan itu atau membuat sarang ImageView Anda di dalam tampilan wadah yang menampung garis bentuk.
hungryghost
9
Semua orang berkomentar tentang bug itu --- hampir tiga tahun dan tidak menunjukkan tanda-tanda untuk diperbaiki kapan saja dekade ini. Mari kita beri tekanan.
Josh Hansen
Bagaimana bug ini belum diperbaiki
P Fuster
74
Berikut adalah salinan file XML untuk membuat drawable dengan latar belakang putih, batas hitam, dan sudut bundar:
simpan sebagai file xml di direktori drawable, Gunakan seperti Anda menggunakan latar belakang drawable (ikon atau file sumber daya) menggunakan nama sumber dayanya (R.drawable.your_xml_name)
Jawaban ini cukup banyak dengan jawaban di atas. Satu-satunya perubahan nyata di sini adalah definisi dari masing-masing jari-jari sudut, dan diberi nilai yang sama untuk setiap sudut saya akan menulisnya dalam satu baris sebagai gantinya: <corners android:radius="7dp" />:)
ZooMagic
ini adalah jawaban TERBAIK untuk saya, karena mencakup ketersediaan pembulatan sudut tertentu ... pekerjaan bagus, bekerja 100%
Mahmoud Ayman
Sudut-sudut ImageView tidak membulat (terpotong), bagaimana cara mengatasi ini?
Primož Kralj
Masih bekerja pada bulan September 2019. Bagus.
Nikolas Rieble
36
Gunakan CardView di perpustakaan dukungan android v7. Meskipun agak berat, ini menyelesaikan semua masalah, dan cukup mudah. Tidak seperti metode latar yang ditetapkan yang dapat digambar, metode ini dapat memotong subview dengan sukses.
Jauh lebih baik untuk semua orang yang bisa "membelinya" daripada apa pun. Ini membuat saya bingung bahwa hal mendasar semacam itu bukan bagian dari tampilan Android standar, menjadi bahan pokok dalam CSS untuk hampir semua browser web
Ben Philipp
29
Saya telah melakukan ini:
Periksa Tangkapan Layar:
Buat file drawable dengan nama custom_rectangle.xmldi folder drawable :
Ini tidak berhasil. seperti yang telah Anda tentukan, itu adalah latar belakangnya, sehingga konten menimpa sudut-sudut yang bulat, dan jika Anda memiliki konten yang menarik di sudut-sudutnya, Anda tidak akan melihatnya dibulatkan.
pengembang android
25
Saya pikir cara yang lebih baik untuk melakukannya adalah menggabungkan 2 hal:
buat bitmap tata letak, seperti yang ditunjukkan di sini .
buat drawed rounded dari bitmap, seperti yang ditunjukkan di sini
atur drawable pada imageView.
Ini akan menangani kasus-kasus yang gagal diselesaikan solusi lain, seperti memiliki konten yang memiliki sudut.
Saya pikir itu juga sedikit lebih ramah GPU, karena ia menunjukkan satu lapisan, bukan 2.
Satu-satunya cara yang lebih baik adalah membuat tampilan yang sepenuhnya dikustomisasi, tetapi itu banyak kode dan mungkin membutuhkan banyak waktu. Saya pikir apa yang saya sarankan di sini adalah yang terbaik dari kedua dunia.
Berikut cuplikan cara melakukannya:
RoundedCornersDrawable.java
/**
* shows a bitmap as if it had rounded corners. based on :
* http://rahulswackyworld.blogspot.co.il/2013/04/android-drawables-with-rounded_7.html
* easy alternative from support library: RoundedBitmapDrawableFactory.create( ...) ;
*/
public class RoundedCornersDrawable extends BitmapDrawable {
private final BitmapShader bitmapShader;
private final Paint p;
private final RectF rect;
private final float borderRadius;
public RoundedCornersDrawable(final Resources resources, final Bitmap bitmap, final float borderRadius) {
super(resources, bitmap);
bitmapShader = new BitmapShader(getBitmap(), Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
final Bitmap b = getBitmap();
p = getPaint();
p.setAntiAlias(true);
p.setShader(bitmapShader);
final int w = b.getWidth(), h = b.getHeight();
rect = new RectF(0, 0, w, h);
this.borderRadius = borderRadius < 0 ? 0.15f * Math.min(w, h) : borderRadius;
}
@Override
public void draw(final Canvas canvas) {
canvas.drawRoundRect(rect, borderRadius, borderRadius, p);
}
}
CustomView.java
public class CustomView extends ImageView {
private View mMainContainer;
private boolean mIsDirty=false;
// TODO for each change of views/content, set mIsDirty to true and call invalidate
@Override
protected void onDraw(final Canvas canvas) {
if (mIsDirty) {
mIsDirty = false;
drawContent();
return;
}
super.onDraw(canvas);
}
/**
* draws the view's content to a bitmap. code based on :
* http://nadavfima.com/android-snippet-inflate-a-layout-draw-to-a-bitmap/
*/
public static Bitmap drawToBitmap(final View viewToDrawFrom, final int width, final int height) {
// Create a new bitmap and a new canvas using that bitmap
final Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(bmp);
viewToDrawFrom.setDrawingCacheEnabled(true);
// Supply measurements
viewToDrawFrom.measure(MeasureSpec.makeMeasureSpec(canvas.getWidth(), MeasureSpec.EXACTLY),
MeasureSpec.makeMeasureSpec(canvas.getHeight(), MeasureSpec.EXACTLY));
// Apply the measures so the layout would resize before drawing.
viewToDrawFrom.layout(0, 0, viewToDrawFrom.getMeasuredWidth(), viewToDrawFrom.getMeasuredHeight());
// and now the bmp object will actually contain the requested layout
canvas.drawBitmap(viewToDrawFrom.getDrawingCache(), 0, 0, new Paint());
return bmp;
}
private void drawContent() {
if (getMeasuredWidth() <= 0 || getMeasuredHeight() <= 0)
return;
final Bitmap bitmap = drawToBitmap(mMainContainer, getMeasuredWidth(), getMeasuredHeight());
final RoundedCornersDrawable drawable = new RoundedCornersDrawable(getResources(), bitmap, 15);
setImageDrawable(drawable);
}
}
EDIT: menemukan alternatif yang bagus, berdasarkan pustaka "RoundKornersLayouts" . Miliki kelas yang akan digunakan untuk semua kelas tata letak yang ingin Anda perpanjang, untuk dibulatkan:
//based on https://github.com/JcMinarro/RoundKornerLayouts
class CanvasRounder(cornerRadius: Float, cornerStrokeColor: Int = 0, cornerStrokeWidth: Float = 0F) {
private val path = android.graphics.Path()
private lateinit var rectF: RectF
private var strokePaint: Paint?
var cornerRadius: Float = cornerRadius
set(value) {
field = value
resetPath()
}
init {
if (cornerStrokeWidth <= 0)
strokePaint = null
else {
strokePaint = Paint()
strokePaint!!.style = Paint.Style.STROKE
strokePaint!!.isAntiAlias = true
strokePaint!!.color = cornerStrokeColor
strokePaint!!.strokeWidth = cornerStrokeWidth
}
}
fun round(canvas: Canvas, drawFunction: (Canvas) -> Unit) {
val save = canvas.save()
canvas.clipPath(path)
drawFunction(canvas)
if (strokePaint != null)
canvas.drawRoundRect(rectF, cornerRadius, cornerRadius, strokePaint)
canvas.restoreToCount(save)
}
fun updateSize(currentWidth: Int, currentHeight: Int) {
rectF = android.graphics.RectF(0f, 0f, currentWidth.toFloat(), currentHeight.toFloat())
resetPath()
}
private fun resetPath() {
path.reset()
path.addRoundRect(rectF, cornerRadius, cornerRadius, Path.Direction.CW)
path.close()
}
}
Kemudian, di setiap kelas tata letak khusus Anda, tambahkan kode yang mirip dengan yang ini:
Alternatif lain, yang mungkin lebih mudah untuk sebagian besar kegunaan: gunakan MaterialCardView. Hal ini memungkinkan menyesuaikan sudut membulat, warna dan lebar goresan, dan ketinggian.
Perhatikan bahwa ada sedikit masalah artefak di tepi goresan (meninggalkan beberapa piksel konten di sana), jika Anda menggunakannya. Anda dapat melihatnya jika Anda memperbesar. Saya telah melaporkan tentang masalah ini di sini .
EDIT: tampaknya diperbaiki, tetapi tidak pada IDE. Dilaporkan di sini .
Terima kasih telah menyusun jawaban yang luar biasa ini, ini membuat saya bergerak ke arah yang benar, tetapi saya dapat menggunakan bantuan dengan masalah yang sangat terkait di sini stackoverflow.com/questions/25877515/…
Will Thomson
Ini memberikan kesalahan karena tidak ada konstruktor default yang tersedia di ImageView.
Anuj
Ini harus diterima jawaban. Alih-alih logika datar Anda turun dan menemukan solusi yang luar biasa. Ini juga memecahkan masalah yang Anda sebutkan di komentar untuk jawaban lain. Terima kasih atas usaha Anda dan mungkin Anda bisa memperbaiki kelas yang berfungsi penuh dan membagikannya melalui github. Saya pikir itu mungkin membantu banyak orang.
Arda Kara
@ Hakim Anda pikir saya harus? Saya akan berpikir tentang hal ini. Untuk saat ini, Anda dapat melihat repositori lain yang saya buat, di sini: github.com/AndroidDeveloperLB?tab=repositories
pengembang android
Setelah sebagian besar selesai, Anda dapat mencobanya. Btw autofittextview terlihat sangat keren.
Arda Kara
10
Coba ini...
1. buat xml yang dapat ditarik (custom_layout.xml):
Seperti yang saya tulis di atas solusi serupa: Ini tidak berhasil. seperti yang telah Anda tentukan, itu adalah latar belakangnya, sehingga konten menimpa sudut-sudut yang bulat, dan jika Anda memiliki konten yang menarik di sudut-sudutnya, Anda tidak akan melihatnya dibulatkan.
Pengembang android
9
Jika Anda ingin membuat tata letak Anda membulat, yang terbaik adalah menggunakan CardView, itu menyediakan banyak fitur untuk membuat desain yang indah.
Metode terbaik dan paling sederhana adalah dengan memanfaatkan card_background yang dapat digambar dalam tata letak Anda. Ini juga mengikuti pedoman desain materi Google. Cukup sertakan ini di dalam Anda LinearLayout:
android:background="@drawable/card_background"
Tambahkan ini ke direktori Anda yang dapat digambar dan beri nama card_background.xml :
Gunakan CardView untuk mendapatkan tepi bulat untuk tata letak apa pun. Gunakan card_view: cardCornerRadius = "5dp" untuk cardview untuk mendapatkan tepi tata letak bulat.
Ini akan bekerja di bawah API 21 juga, dan memberi Anda sesuatu seperti ini:
Jika Anda bersedia melakukan sedikit usaha lebih banyak kontrol yang lebih baik, maka gunakan android.support.v7.widget.CardViewdengan cardCornerRadiusatributnya (dan atur elevationatribut untuk 0dpmenyingkirkan drop shadow yang menyertainya dengan cardView). Juga, ini akan bekerja dari level API serendah 15.
Jika konten sesuai dengan latar belakang, itu akan menimpanya. Itu tidak benar-benar klip ke bentuk yang Anda tetapkan.
Pengembang android
Maksud Anda pandangan lain? Bisakah Anda memperbarui kode untuk menunjukkan maksud Anda? Idenya adalah bahwa sudut yang bulat tidak akan menempatkan area hitam. Di sudut-sudut, harus ada warna transparan.
pengembang android
Oh saya mendapatkan pertanyaan Anda sekarang. Saya kira untuk itu, Anda dapat puas dengan margin tetap yang kecil pada konten Anda
Abdul Wasae
Namun, konten tidak akan dipotong sesuai bentuk yang Anda pilih, karena margin tetap berbentuk persegi panjang, dan tidak sesuai dengan bentuk yang Anda pilih.
pengembang android
5
Berfungsi untuk mengatur radius sudut secara terprogram
Saya telah mengambil jawaban @gauravsapiens dengan komentar saya di dalam untuk memberi Anda pemahaman yang wajar tentang apa yang akan mempengaruhi parameter.
<?xml version="1.0" encoding="utf-8"?><shapexmlns:android="http://schemas.android.com/apk/res/android"><!-- Background color --><solidandroid:color="@color/white"/><!-- Stroke around the background, width and color --><strokeandroid:width="4dp"android:color="@color/drop_shadow"/><!-- The corners of the shape --><cornersandroid:radius="4dp"/><!-- Padding for the background, e.g the Text inside a TextView will be
located differently --><paddingandroid:left="10dp"android:right="10dp"android:bottom="10dp"android:top="10dp"/></shape>
Jika Anda hanya ingin membuat bentuk yang membulatkan sudut, lepaskan bantalan dan goresan akan berhasil. Jika Anda menghapus solid juga, Anda akan, pada dasarnya, telah membuat sudut bulat pada latar belakang transparan.
Demi menjadi malas, saya telah membuat bentuk di bawahnya, yang hanya merupakan latar belakang putih solid dengan sudut-sudut bulat - selamat menikmati! :)
<?xml version="1.0" encoding="utf-8"?><shapexmlns:android="http://schemas.android.com/apk/res/android"><!-- Background color --><solidandroid:color="@color/white"/><!-- The corners of the shape --><cornersandroid:radius="4dp"/></shape>
<?xml version="1.0" encoding="utf-8"?><shapexmlns:android="http://schemas.android.com/apk/res/android"><solidandroid:color="@color/your_colour"/><strokeandroid:width="2dp"android:color="@color/your_colour"/><cornersandroid:radius="10dp"/></shape>
<--width, color, radius should be as per your requirement-->
Kemudian dalam kode Anda, Anda dapat menerapkan ShapeAppearanceModel. Sesuatu seperti:
float radius = getResources().getDimension(R.dimen.default_corner_radius);
LinearLayout linearLayout= findViewById(R.id.linear_rounded);
ShapeAppearanceModel shapeAppearanceModel = new ShapeAppearanceModel()
.toBuilder()
.setAllCorners(CornerFamily.ROUNDED,radius)
.build();
MaterialShapeDrawable shapeDrawable = new MaterialShapeDrawable(shapeAppearanceModel);
//Fill the LinearLayout with your color
shapeDrawable.setFillColor(ContextCompat.getColorStateList(this,R.color.secondaryLightColor));
ViewCompat.setBackground(linearLayout,shapeDrawable);
Catatan :: ini membutuhkan versi 1.1.0 dari pustaka komponen material.
Jawaban:
1: Tentukan layout_bg.xml dalam drawables :
2: Tambahkan
layout_bg.xml
sebagai latar belakang ke tata letak Andasumber
Element shape doesn't have the required attribute android:layout_height
?Element shape doesn't have the required attribute android:layout_height
Alasan kesalahan ditampilkan karena layout_bg.xml tidak ada di dalam folder drawable.Untuk API 21+, Gunakan Tampilan Klip
Kliping garis bundar ditambahkan ke
View
kelas di API 21. Lihat dokumen pelatihan ini atau referensi ini untuk informasi lebih lanjut.Fitur bawaan ini membuat sudut bundar sangat mudah diimplementasikan. Ini berfungsi pada tampilan atau tata letak apa pun dan mendukung kliping yang tepat.
Inilah Yang Harus Dilakukan:
android:background="@drawable/round_outline"
android:clipToOutline="true"
Sayangnya, tampaknya ada bug dan atribut XML ini saat ini tidak dikenali. Untungnya, kita dapat mengatur kliping di Jawa:
View.setClipToOutline(true)
Seperti apa rupanya:
Catatan Khusus Tentang ImageViews
setClipToOutline()
hanya berfungsi ketika latar belakang Tampilan diatur ke bentuk yang dapat digambar. Jika bentuk latar belakang ini ada, Lihat memperlakukan garis besar latar belakang sebagai batas untuk kliping dan tujuan bayangan.Ini berarti bahwa jika Anda ingin membulatkan sudut pada ImageView dengan
setClipToOutline()
, gambar Anda harus berasalandroid:src
alih-alihandroid:background
(karena latar belakang digunakan untuk bentuk bulat). Jika Anda HARUS menggunakan latar belakang untuk mengatur gambar Anda alih-alih src, Anda dapat menggunakan solusi tampilan bersarang ini:sumber
src=@drawable...
bukanbackground=@drawable
? Anda bisa melakukan itu atau membuat sarang ImageView Anda di dalam tampilan wadah yang menampung garis bentuk.Berikut adalah salinan file XML untuk membuat drawable dengan latar belakang putih, batas hitam, dan sudut bundar:
simpan sebagai file xml di direktori drawable, Gunakan seperti Anda menggunakan latar belakang drawable (ikon atau file sumber daya) menggunakan nama sumber dayanya (R.drawable.your_xml_name)
sumber
<corners android:radius="7dp" />
:)Gunakan CardView di perpustakaan dukungan android v7. Meskipun agak berat, ini menyelesaikan semua masalah, dan cukup mudah. Tidak seperti metode latar yang ditetapkan yang dapat digambar, metode ini dapat memotong subview dengan sukses.
sumber
Saya telah melakukan ini:
Periksa Tangkapan Layar:
Buat file drawable dengan nama
custom_rectangle.xml
di folder drawable :Sekarang terapkan latar belakang Rectangle pada View :
Selesai
sumber
Saya pikir cara yang lebih baik untuk melakukannya adalah menggabungkan 2 hal:
buat bitmap tata letak, seperti yang ditunjukkan di sini .
buat drawed rounded dari bitmap, seperti yang ditunjukkan di sini
atur drawable pada imageView.
Ini akan menangani kasus-kasus yang gagal diselesaikan solusi lain, seperti memiliki konten yang memiliki sudut.
Saya pikir itu juga sedikit lebih ramah GPU, karena ia menunjukkan satu lapisan, bukan 2.
Satu-satunya cara yang lebih baik adalah membuat tampilan yang sepenuhnya dikustomisasi, tetapi itu banyak kode dan mungkin membutuhkan banyak waktu. Saya pikir apa yang saya sarankan di sini adalah yang terbaik dari kedua dunia.
Berikut cuplikan cara melakukannya:
RoundedCornersDrawable.java
CustomView.java
EDIT: menemukan alternatif yang bagus, berdasarkan pustaka "RoundKornersLayouts" . Miliki kelas yang akan digunakan untuk semua kelas tata letak yang ingin Anda perpanjang, untuk dibulatkan:
Kemudian, di setiap kelas tata letak khusus Anda, tambahkan kode yang mirip dengan yang ini:
Jika Anda ingin mendukung atribut, gunakan ini seperti yang tertulis di perpustakaan:
Alternatif lain, yang mungkin lebih mudah untuk sebagian besar kegunaan: gunakan MaterialCardView. Hal ini memungkinkan menyesuaikan sudut membulat, warna dan lebar goresan, dan ketinggian.
Contoh:
Dan hasilnya:
Perhatikan bahwa ada sedikit masalah artefak di tepi goresan (meninggalkan beberapa piksel konten di sana), jika Anda menggunakannya. Anda dapat melihatnya jika Anda memperbesar. Saya telah melaporkan tentang masalah ini di sini .
EDIT: tampaknya diperbaiki, tetapi tidak pada IDE. Dilaporkan di sini .
sumber
Coba ini...
1. buat xml yang dapat ditarik (custom_layout.xml):
2. Tambahkan latar belakang tampilan Anda
sumber
Jika Anda ingin membuat tata letak Anda membulat, yang terbaik adalah menggunakan CardView, itu menyediakan banyak fitur untuk membuat desain yang indah.
Dengan card_view ini: cardCornerRadius = "5dp", Anda dapat mengubah radius.
sumber
Metode terbaik dan paling sederhana adalah dengan memanfaatkan card_background yang dapat digambar dalam tata letak Anda. Ini juga mengikuti pedoman desain materi Google. Cukup sertakan ini di dalam Anda LinearLayout:
Tambahkan ini ke direktori Anda yang dapat digambar dan beri nama card_background.xml :
sumber
Gunakan CardView untuk mendapatkan tepi bulat untuk tata letak apa pun. Gunakan card_view: cardCornerRadius = "5dp" untuk cardview untuk mendapatkan tepi tata letak bulat.
sumber
Cara yang lebih baik untuk melakukannya adalah:
background_activity.xml
Ini akan bekerja di bawah API 21 juga, dan memberi Anda sesuatu seperti ini:
Jika Anda bersedia melakukan sedikit usaha lebih banyak kontrol yang lebih baik, maka gunakan
android.support.v7.widget.CardView
dengancardCornerRadius
atributnya (dan aturelevation
atribut untuk0dp
menyingkirkan drop shadow yang menyertainya dengan cardView). Juga, ini akan bekerja dari level API serendah 15.sumber
Berfungsi untuk mengatur radius sudut secara terprogram
Menggunakan
sumber
@ David, cukup beri nilai padding yang sama dengan goresan, sehingga batas dapat terlihat, tanpa memandang ukuran gambar
sumber
Saya telah mengambil jawaban @gauravsapiens dengan komentar saya di dalam untuk memberi Anda pemahaman yang wajar tentang apa yang akan mempengaruhi parameter.
Jika Anda hanya ingin membuat bentuk yang membulatkan sudut, lepaskan bantalan dan goresan akan berhasil. Jika Anda menghapus solid juga, Anda akan, pada dasarnya, telah membuat sudut bulat pada latar belakang transparan.
Demi menjadi malas, saya telah membuat bentuk di bawahnya, yang hanya merupakan latar belakang putih solid dengan sudut-sudut bulat - selamat menikmati! :)
sumber
Buat xml Anda di drawable,
layout_background.xml
dan kemudian, tambahkan ini di
layout.xml
sumber
Dengan Perpustakaan Komponen Bahan Anda dapat menggunakan
MaterialShapeDrawable
untuk menggambar bentuk kustom .Cukup letakkan LinearLayout di tata letak xml Anda:
Kemudian dalam kode Anda, Anda dapat menerapkan
ShapeAppearanceModel
. Sesuatu seperti:Catatan :: ini membutuhkan versi 1.1.0 dari pustaka komponen material.
sumber
sumber