Saya membuat tombol dan saya ingin menambahkan efek riak ke tombol itu!
Saya membuat file XML tombol bg: (bg_btn.xml)
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient android:startColor="#FFFFFF" android:endColor="#00FF00" android:angle="270" />
<corners android:radius="3dp" />
<stroke android:width="5px" android:color="#000000" />
</shape>
Dan ini file efek riak saya: (ripple_bg.xml)
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:color="#f816a463"
tools:targetApi="lollipop">
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="#f816a463" />
</shape>
</item>
</ripple>
Dan Ini Tombol saya yang ingin saya tambahkan efek riak:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_centerHorizontal="true"
android:layout_marginTop="173dp"
android:textColor="#fff"
android:background="@drawable/ripple_bg"
android:clickable="true" />
Tetapi setelah menambahkan latar belakang tombol efek riak transparan, dan tombol hanya ditampilkan ketika diklik, seperti ini:
Sebelum Klik
Saat Diklik
Tetapi saya membutuhkan warna latar belakang tombol dan efek riak, saya menemukan beberapa kode ini di blog Stack Overflow yang berbeda, tetapi tetap saja tidak berfungsi!
l
ataum
ke link gambar. (lihat suntingan saya)Jawaban:
Berikut ini adalah xml drawable lainnya bagi mereka yang ingin menambahkan semua latar belakang gradien, radius sudut, dan efek riak:
Tambahkan ini ke latar belakang tombol Anda.
PS: jawaban ini berfungsi untuk android api 21 ke atas.
sumber
ripple
.Tambahkan
"?attr/selectableItemBackground"
keandroid:foreground
atribut tampilan Anda jika sudah memiliki latar belakang bersamaandroid:clickable="true"
.sumber
tools:ignore="UnusedAttribute
).?android:attr/selectableItemBackground
(android:attr
bukanattr
)android:foreground
atribut tidak berpengaruh pada tingkat API yang lebih rendah dari 23Tambahkan Efek Ripple / Animasi ke Tombol Android
Cukup ganti atribut latar belakang tombol Anda dengan android: background = "? Attr / selectableItemBackground" dan kode Anda terlihat seperti ini.
Cara Lain untuk Menambahkan Efek Ripple / Animasi ke Tombol Android
Dengan menggunakan metode ini, Anda dapat menyesuaikan warna efek riak. Pertama, Anda harus membuat file xml di direktori resource drawable. Buat file ripple_effect.xml dan tambahkan kode berikut. res / drawable / ripple_effect.xml
Dan setel latar belakang tombol ke file sumber daya dapat digambar di atas
sumber
Selain solusi Jigar Patel , tambahkan ini ke ripple.xml untuk menghindari latar belakang tombol yang transparan.
Xml lengkap :
Gunakan ripple.xml ini sebagai latar belakang di tombol Anda:
sumber
<item android:id="@android:id/mask"> [...]
. Kecuali jika Anda menginginkan topeng oval. Terima kasih atas jawaban anda!Ketika tombol memiliki latar belakang dari drawable, kita dapat menambahkan efek riak ke parameter latar depan .. Periksa kode di bawah ini berfungsi untuk tombol saya dengan latar belakang berbeda
Tambahkan parameter di bawah untuk efek riak
Untuk referensi, lihat tautan di bawah ini https://jascode.wordpress.com/2017/11/11/how-to-add-ripple-effect-to-an-android-app/
sumber
AppCompat v7 +
Anda harus menggunakan
"?android:attr/selectableItemBackground"
atau"?android:attr/selectableItemBackgroundBorderless"
, berdasarkan preferensi Anda. Saya lebih sukaBorderless
.Anda dapat memasukkannya ke dalam
android:background
atauandroid:foreground
mempertahankan properti yang ada.Elemen harus memiliki
android:clickable="true"
danandroid:focusable="true"
agar ini berfungsi, tetapi banyak elemen, seperti tombol, memilikinya secaratrue
default.Secara terprogram (Java)
Secara terprogram (Kotlin)
Fungsi Ekstensi Kotlin yang Dapat Digunakan Kembali
sumber
Menambahkan atribut latar depan dan yang dapat diklik berhasil untuk saya.
sumber
Selain Sudheesh R
sumber
Saat Anda menggunakan android: background, Anda mengganti banyak gaya, tampilan, dan nuansa tombol dengan warna kosong.
Pembaruan: Sejak AppCompat versi 23.0.0, ada Widget.AppCompat.Button.A gaya berwarna baru yang menggunakan colorButtonNormal tema Anda untuk color yang dinonaktifkan dan colorAccent untuk warna yang diaktifkan.
Ini memungkinkan Anda menerapkannya ke tombol Anda secara langsung melalui
Anda dapat menggunakan drawable di direktori v21 Anda untuk latar belakang seperti:
Ini akan memastikan warna latar belakang Anda adalah? Attr / colorPrimary dan memiliki animasi riak default menggunakan? Attr / colorControlHighlight default (yang juga dapat Anda setel di tema jika Anda mau).
Catatan: Anda harus membuat pemilih khusus kurang dari v21:
sumber
coba ini
sumber
Pendekatan sederhana adalah menetapkan tema tampilan seperti yang diuraikan di sini .
some_view.xml
some_style.xml
sumber
Gunakan saja:
Dari pada:
Jangan lupa untuk mengubah Anda
Button
menjadiandroid.support.v7.widget.AppCompatButton
sumber
Solusi alternatif untuk menggunakan
<ripple>
tag (yang secara pribadi saya lebih memilih untuk tidak melakukannya, karena warnanya bukan "default"), adalah sebagai berikut:Buat drawable untuk latar belakang tombol, dan sertakan
<item android:drawable="?attr/selectableItemBackground">
di<layer-list>
Kemudian (dan saya pikir ini adalah bagian penting) secara terprogram diatur
backgroundResource(R.drawable.custom_button)
pada contoh tombol Anda.Aktivitas / Fragmen
Tata Letak
custom_button.xml
sumber