Saya mencoba mendapatkan CardView untuk menampilkan efek riak ketika disentuh dengan mengatur atribut android: backgound dalam file XML aktivitas seperti dijelaskan di sini di halaman Android Developers, tetapi tidak berfungsi. Tidak ada animasi sama sekali, tetapi metode di onClick dipanggil. Saya juga mencoba membuat file ripple.xml seperti yang disarankan di sini , tetapi hasilnya sama.
CardView seperti yang muncul di file XML aktivitas:
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="155dp"
android:layout_height="230dp"
android:elevation="4dp"
android:translationZ="5dp"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:onClick="showNotices"
android:background="?android:attr/selectableItemBackground"
android:id="@+id/notices_card"
card_view:cardCornerRadius="2dp">
</android.support.v7.widget.CardView>
Saya relatif baru dalam pengembangan android, jadi saya mungkin telah membuat beberapa kesalahan yang jelas.
android
android-layout
android-5.0-lollipop
android-cardview
AkraticCritic
sumber
sumber
?android:attr/selectableItemBackground
membutuhkan API level 11android:clickable="true"
.Tambahkan dua kode baris ini ke tampilan xml Anda untuk memberikan efek riak pada cardView Anda.
sumber
foreground
bekerja dengan tampilan latar belakang kustom seperti pesona! Bagus!Saya berhasil mendapatkan efek riak pada cardview dengan:
dan untuk custom_bg yang dapat Anda lihat dalam kode di atas, Anda harus mendefinisikan file xml untuk perangkat lollipop (dalam paket drawable-v21) dan pra-lollipop (dalam paket yang dapat ditarik). untuk custom_bg dalam paket drawable-v21 kodenya adalah:
untuk custom_bg dalam paket drawable, kodenya adalah:
jadi pada perangkat pre-lollipop Anda akan memiliki efek klik padat dan pada perangkat lollipop Anda akan memiliki efek riak pada cardview.
sumber
Efek riak dihilangkan di pustaka dukungan appcompat yang Anda gunakan. Jika Anda ingin melihat riak, gunakan versi Android L dan uji pada perangkat Android L. Per situs AppCompat v7:
"Mengapa tidak ada riak pada pra-Lollipop? Banyak hal yang memungkinkan RippleDrawable untuk berjalan dengan lancar adalah RenderThread Android 5.0 yang baru. Untuk mengoptimalkan kinerja pada versi Android sebelumnya, kami membiarkan RippleDrawable keluar untuk saat ini."
Lihat tautan ini di sini untuk info lebih lanjut
sumber
Jika aplikasi
minSdkVersion
yang Anda gunakan level 9, Anda dapat menggunakan:Sebaliknya, mulai dari level 11, Anda menggunakan:
Dari dokumentasi:
sumber
Bagi saya, menambahkan
foreground
toCardView
tidak berfungsi (alasan tidak diketahui: /)Menambahkan yang sama untuk tata letak anak itu melakukan trik.
KODE:
sumber
Tambahkan dua ini seperti kerja kode seperti pesona untuk tampilan seperti Tombol, Linear Layout, atau CardView Cukup letakkan dua baris ini dan lihat keajaiban ...
sumber
Jika ada tata letak root seperti RelativeLayout atau LinearLayout yang berisi semua komponen item adaptor di CardView, Anda harus mengatur atribut latar belakang dalam tata letak root tersebut. Suka:
sumber
Acara riak untuk
Cardview
kontrol android :sumber
Saya tidak senang dengan AppCompat, jadi saya menulis CardView saya sendiri dan riak yang di-backport. Ini dia berjalan di Galaxy S dengan Gingerbread, jadi pasti mungkin.
Untuk lebih jelasnya periksa kode sumber .
sumber
Tambahkan berikut ini ke xml Anda:
Dan tambahkan ke adaptor Anda (jika itu kasus Anda)
sumber
Bagi mereka yang mencari solusi untuk masalah efek riak yang tidak bekerja pada CardView yang dibuat secara program (atau dalam kasus khusus saya yang memperluas CardView) yang ditampilkan dalam RecyclerView, berikut ini bekerja untuk saya. Pada dasarnya mendeklarasikan atribut XML yang disebutkan dalam jawaban lain secara deklaratif dalam file tata letak XML tampaknya tidak berfungsi untuk CardView yang dibuat secara terprogram, atau yang dibuat dari tata letak khusus (meskipun tampilan root adalah CardView atau elemen gabungan digunakan), jadi mereka harus diatur secara terprogram seperti:
Di mana
MadeupCardView extends CardView
Kudos untuk jawaban ini untukTypedArray
bagian itu.sumber
Hanya bekerja api 21 dan gunakan ini tidak menggunakan tampilan kartu baris daftar ini
sumber
Gunakan Material Cardview sebagai gantinya, itu memperluas Cardview dan menyediakan beberapa fitur baru termasuk efek yang dapat diklik default:
Ketergantungan
sumber