terima kasih. +1 untuk ini. Setelah menyimpannya ke dalam folder yang dapat digambar sebagai file xml. Bagaimana kita dapat menggunakannya?
Android Killer
1
@AndroidPower Anda dapat menggunakannya dengan R.drawable.FILE_NAME
slayton
2
Di mana kode ini pergi, dalam kode .axml untuk markup untuk tombol? Apakah itu masuk dalam file jenis styles.xml?
theJerm
Saya hanya menggunakan stroke (dan membuatnya putih) untuk menguraikan Tombol dengan putih. Bekerja sangat baik dengan 4.4 tetapi pada 4.0.3 tombol menjadi hitam - ada ide mengapa?
Kibi
1
@ Kibi maaf seseorang mengedit jawaban saya dan memberi Anda saran yang salah. Saya telah mengubahnya tetapi saya terkejut bahwa seseorang dapat mengedit jawaban yang diterima dan mengubah kegunaannya.
Pedantic
57
• Android Official Solution
Sejak Dukungan Desain Android v28 diperkenalkan, mudah untuk membuat tombol berbatas menggunakan MaterialButton. Kelas ini memasok gaya Material yang diperbarui untuk tombol di konstruktor. Menggunakan app:strokeColordan app:strokeWidthAnda dapat membuat perbatasan khusus sebagai berikut:
<com.google.android.material.button.MaterialButtonstyle="@style/Widget.AppCompat.Button.Borderless"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="UNFILLED MATERIAL BUTTON"android:textColor="@color/green"android:textSize="15sp"app:backgroundTint="@android:color/transparent"app:cornerRadius="8dp"app:rippleColor="#33AAAAAA"app:strokeColor="@color/green"app:strokeWidth="2dp"/>
<android.support.design.button.MaterialButtonstyle="@style/Widget.AppCompat.Button.Borderless"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="UNFILLED MATERIAL BUTTON"android:textColor="@color/green"android:textSize="15sp"app:backgroundTint="@android:color/transparent"app:cornerRadius="8dp"app:rippleColor="#33AAAAAA"app:strokeColor="@color/green"app:strokeWidth="2dp"/>
Saya melihat Anda memiliki textColor dan textSize dideklarasikan di XML tombol Anda. Apa yang Anda sarankan jika seseorang sudah memiliki gaya yang ditentukan untuk textColor dan textSize dan sekarang mereka ingin menambahkan style="@style/Widget.AppCompat.Button.Borderless"?
Seperti yang Anda sebutkan, adalah mungkin untuk menentukan gaya yang mewarisi dari gaya tanpa batas, kemudian menambahkan atribut yang disukai sesuai dengan gaya dasar.
aminografi
Sedikit OT, tapi apa ikon ke-4 yang menarik di panel tindakan di bagian bawah GIF? (Juga sepertinya GIF diambil dari perangkat asli, keren)
i336_
1
Mungkin saya salah tetapi bagi saya di • Unfilled Bordered Button, saya harus mengubah, aplikasi: backgroundTint = "@ color / transparan" ke app: backgroundTint = "@ android: color / transparan"
xarly
37
Buat button_border.xmlfile di folder yang dapat digambar.
Jika tombol Anda tidak memerlukan latar belakang transparan, maka Anda dapat membuat ilusi perbatasan menggunakan Layout Bingkai. Cukup sesuaikan atribut "padding" FrameLayout untuk mengubah ketebalan perbatasan.
<FrameLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="1sp"android:background="#000000"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Your text goes here"android:background="@color/white"android:textColor="@color/black"android:padding="10sp"/></FrameLayout>
Saya tidak yakin apakah file bentuk xml memiliki warna perbatasan yang dapat diedit secara dinamis. Tapi saya tahu bahwa dengan solusi ini, Anda dapat secara dinamis mengubah warna perbatasan dengan mengatur latar belakang FrameLayout.
GradientDrawable gd1 =newGradientDrawable();
gd1.setColor(0xFFF43F10);// Changes this drawbale to use a single color instead of a gradient
gd1.setCornerRadius(5);
gd1.setStroke(1,0xFFF43F10);
cancelskill.setBackgroundDrawable(gd1);
cancelskill.setOnClickListener(newView.OnClickListener(){@Overridepublicvoid onClick(View v){
cancelskill.setBackgroundColor(Color.parseColor("#ffffff"));
cancelskill.setTextColor(Color.parseColor("#f43f10"));GradientDrawable gd =newGradientDrawable();
gd.setColor(0xFFFFFFFF);// Changes this drawbale to use a single color instead of a gradient
gd.setCornerRadius(5);
gd.setStroke(1,0xFFF43F10);
cancelskill.setBackgroundDrawable(gd);
finish();}});
Saya tahu ini sekitar satu tahun terlambat, tetapi Anda juga dapat membuat gambar 9 jalur. Ada alat yang dilengkapi dengan android SDK yang membantu dalam menciptakan gambar tersebut. Lihat tautan ini: http://developer.android.com/tools/help/draw9patch .html
Jawaban:
Langkah 1: Buat file dengan nama: my_button_bg.xml
Langkah 2: Tempatkan file ini di res / drawables.xml
Langkah 3: Masukkan kode di bawah ini
Langkah 4: Gunakan kode "android: background =" @ drawable / my_button_bg "jika diperlukan misalnya di bawah ini:
sumber
•
Android Official Solution
Sejak Dukungan Desain Android v28 diperkenalkan, mudah untuk membuat tombol berbatas menggunakan
MaterialButton
. Kelas ini memasok gaya Material yang diperbarui untuk tombol di konstruktor. Menggunakanapp:strokeColor
danapp:strokeWidth
Anda dapat membuat perbatasan khusus sebagai berikut:1. Saat Anda menggunakan
androidx
:build.gradle
• Tombol Berbatasan:
• Tombol Berbatas Tidak Terisi:
2. Saat Anda menggunakan
appcompat
:build.gradle
style.xml
Pastikan tema aplikasi Anda
Theme.MaterialComponents
bukan warisanTheme.AppCompat
.• Tombol Berbatasan:
• Tombol Berbatas Tidak Terisi:
Hasil Visual
sumber
style="@style/Widget.AppCompat.Button.Borderless"
?Buat
button_border.xml
file di folder yang dapat digambar.res / drawable / button_border.xml
Dan tambahkan tombol ke tata letak aktivitas XML Anda dan atur latar belakang
android:background="@drawable/button_border"
.sumber
buat drawable / button_green.xml:
dan tunjukkan sebagai
@drawable/button_green
:sumber
Silakan lihat di sini tentang membuat bentuk yang dapat ditarik http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
Setelah Anda melakukan ini, dalam XML untuk set tombol Anda
android:background="@drawable/your_button_border"
sumber
Jika tombol Anda tidak memerlukan latar belakang transparan, maka Anda dapat membuat ilusi perbatasan menggunakan Layout Bingkai. Cukup sesuaikan atribut "padding" FrameLayout untuk mengubah ketebalan perbatasan.
Saya tidak yakin apakah file bentuk xml memiliki warna perbatasan yang dapat diedit secara dinamis. Tapi saya tahu bahwa dengan solusi ini, Anda dapat secara dinamis mengubah warna perbatasan dengan mengatur latar belakang FrameLayout.
sumber
Dalam tata letak XML Anda:
Di folder yang dapat digambar, buat file untuk gaya batas tombol:
Dan di Aktivitas Anda:
sumber
Saya tahu ini sekitar satu tahun terlambat, tetapi Anda juga dapat membuat gambar 9 jalur. Ada alat yang dilengkapi dengan android SDK yang membantu dalam menciptakan gambar tersebut. Lihat tautan ini: http://developer.android.com/tools/help/draw9patch .html
PS: gambar bisa diskalakan tanpa batas juga
sumber