Saya baru saja memeriksa pedoman desain dan bertanya-tanya tentang tombol tanpa bingkai. Saya melotot dan mencoba menemukan sumbernya tetapi tidak dapat menyatukannya sendiri. Apakah ini widget Tombol normal tetapi Anda menambahkan gaya kustom (default Android)? Bagaimana cara membuat tombol tanpa batas ini (tentu saja Anda dapat mengatur latar belakang menjadi kosong, tetapi saya tidak memiliki pembatas)?
Berikut tautan ke pedoman desain:
android
layout
button
borderless
KarlKarlsom
sumber
sumber
Jawaban:
Untuk menghilangkan kebingungan:
Ini dilakukan dalam 2 langkah: Menyetel atribut latar belakang tombol ke android: attr / selectableItemBackground membuat Anda tombol dengan umpan balik tetapi tanpa latar belakang.
Garis untuk membagi tombol tanpa bingkai dari tata letak Anda yang lain dilakukan oleh tampilan dengan latar belakang android: attr / dividerVertical
Untuk pemahaman yang lebih baik di sini adalah tata letak untuk kombinasi tombol OK / Batal tanpa batas di bagian bawah layar Anda (seperti pada gambar kanan di atas).
sumber
?android:attr/selectableItemBackground
untuk?attr/selectableItemBackground
dan?android:attr/dividerVertical
untuk?attr/dividerVertical
?android:attr/dividerVerticalfor
dan?attr/dividerVertical
juga bekerja untuk absCukup tambahkan atribut gaya berikut di
Button
tag Anda :sumber: http://developer.android.com/guide/topics/ui/controls/button.html#Borderless
Kemudian Anda dapat menambahkan pemisah seperti pada jawaban Karl .
sumber
Jawaban telat, tapi banyak dilihat. Karena API <11 belum mati, bagi mereka yang tertarik, ini adalah trik.
Biarkan wadah Anda memiliki warna yang diinginkan (mungkin transparan). Kemudian berikan tombol Anda selektor dengan warna transparan default, dan beberapa warna saat ditekan. Dengan begitu Anda akan memiliki tombol transparan, tetapi akan berubah warna saat ditekan (seperti holo). Anda juga dapat menambahkan beberapa animasi (seperti holo). Selektornya harus seperti ini:
Dan tombolnya harus ada
android:background="@drawable/selector_transparent_button"
PS: biarkan wadah Anda memiliki pemisah (
android:divider='@android:drawable/...
untuk API <11)PS [Pemula]: Anda harus menentukan warna-warna itu di values / colors.xml
sumber
API Level 10
danAPI Level > 10
!Untuk yang ingin tombol tanpa bingkai tapi tetap animasi saat diklik. Tambahkan ini di tombol.
Jika Anda menginginkan pemisah / garis di antara mereka. Tambahkan ini di layout linier.
Ringkasan
sumber
Untuk menambahkan gaya material
style="@style/Widget.AppCompat.Button.Borderless"
saat menggunakan pustaka AppCompat.sumber
Dari sumber aplikasi iosched saya mendapatkan
ButtonBar
kelas ini :Ini akan menjadi tombol
LinearLayout
"OK" dan "Batal" masuk, dan akan menangani menempatkan mereka dalam urutan yang sesuai. Kemudian letakkan ini di tata letak yang Anda inginkan untuk tombol:Ini memberi Anda tampilan dialog dengan tombol tanpa bingkai. Anda dapat menemukan atribut ini di res dalam kerangka kerja.
buttonBarStyle
melakukan pembatas dan bantalan vertikal.buttonBarButtonStyle
disetelborderlessButtonStyle
untuk tema Holo, tapi saya yakin ini harus menjadi cara paling kuat untuk menampilkannya karena kerangka kerja ingin menampilkannya.sumber
Lihat ke tema atribut
buttonBarStyle
,buttonBarButtonStyle
danborderlessButtonStyle
.sumber
buttonBarButtonStyle
saya mendapatkan pengecualianE/AndroidRuntime(17134): Caused by: java.lang.reflect.InvocationTargetException E/AndroidRuntime(17134): Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x1/d=0x1030281 a=2 r=0x1030281}
Tidak tahu mengapa, tetapi menggunakanselectableItemBackground
keajaiban.Anda juga dapat membuat tombol tanpa bingkai melalui kode:
sumber
android.R.attr.selectableItemBackground
membutuhkan API 21. Ada ide bagaimana melakukan ini pada versi sebelumnya?Bagi mereka yang ingin membuat tombol tanpa batas lewat program untuk API> = 8
sumber
Solusi lain yang seharusnya berfungsi pada platform Android yang lebih lama dan yang lebih baru adalah dengan menggunakan
atribut untuk tampilan Tombol. Tetapi setelah menambahkan tombol baris di atas tidak akan memberikan umpan balik sentuhan.
Untuk memberikan masukan sentuh, tambahkan kode berikut ke kelas Aktivitas
Ini bekerja dengan baik untuk saya.
sumber
case MotionEvent.ACTION_CANCEL:
bawah inicase MotionEvent.ACTION_UP:
juga.Untuk siapa saja yang masih mencari:
mewarisi gaya Anda sendiri untuk bilah tombol Holo:
atau Cahaya Holo:
dan untuk tombol Holo tanpa bingkai:
atau Cahaya Holo:
sumber
Ini adalah cara Anda membuat tombol tanpa bingkai (datar) secara terprogram tanpa menggunakan XML
sumber
ContextThemeWrapper myContext = new ContextThemeWrapper(this.getActivity(), R.style.Widget_AppCompat_Button_Borderless_Colored); Button myButton = new Button(myContext);
dan itu tidak akan berhasil. Setelah menambahkan parameter ke-2 dan ke-3, itu berfungsi!Gunakan kode di bawah ini di file xml Anda. Gunakan android: background = "# 00000000" untuk memiliki warna transparan.
sumber
Anda dapat menggunakan Pustaka Dukungan AppCompat untuk Tombol Tanpa Batas.
Anda dapat membuat Tombol Tanpa Tepi seperti ini:
Anda dapat membuat Tombol Berwarna Tanpa Tepi seperti ini:
sumber
Untuk beberapa alasan tidak
style="Widget.Holo.Button.Borderless"
dan tidakandroid:background="?android:attr/selectableItemBackground"
berhasil untuk saya. Lebih tepatnyaWidget.Holo.Button.Borderless
melakukan pekerjaan di Android 4.0 tetapi tidak berfungsi di Android 2.3.3. Apa trik untuk saya pada kedua versi ituandroid:background="@drawable/transparent"
dan XML ini di res / drawable / transparent.xml:Kepala polos melalui pendekatan dinding.
sumber
android:background="?android:attr/dividerVertical"
trik yang rapi .Pertunjukan slide yang bagus tentang cara mendapatkan efek yang diinginkan dari Google Nick Butcher (mulai dari slide 20). Dia menggunakan android standar
@attr
untuk mengatur gaya tombol dan pembatas.sumber
Menambahkan ke jawaban teratas Anda juga dapat menggunakan tampilan dengan warna latar belakang abu-abu gelap dalam Tata Letak Linear seperti itu.
Jika garis Anda horizontal, Anda ingin mengatur tinggi ke 1dip dan lebarnya agar sesuai dengan induk dan sebaliknya jika garis Anda vertikal.
sumber
Jika Anda ingin mencapai hal yang sama secara terprogram:
(ini adalah C # tetapi mudah diterjemahkan ke Java)
Pertandingan
sumber
Coba kode ini, untuk menghapus drawable latar belakang (@ drawable / bg) secara terprogram, kita hanya perlu memberikan null sebagai parameter.
sumber