Saya telah melihat beberapa pertanyaan SO dan mereka memberikan beberapa metode yang mungkin untuk mencapai apa yang saya inginkan. Sebagai contoh:
Gunakan
colorControlHighlight
atribut di styles.xml.Inilah styles-v21.xml saya:
<style name="SelectableItemBackground"> <item name="android:colorControlHighlight">#5677FC</item> <item name="android:background">?attr/selectableItemBackground</item> </style>
Dan widget saya:
<TextView android:id="@+id/tv_take_photo_as_bt" android:layout_width="280dp" android:layout_height="48dp" android:text="@string/act_take_photo" style="@style/SelectableItemBackground"/>
Dan itu tidak berhasil. Saya juga mencoba menambahkan
parent="Theme.AppCompat
gaya "SelectableItemBackground", atau mengubah kecolorControlHighlight(no android: prefix)"
, atau mengubah ke?android:attr/selectableItemBackground
, tidak ada yang berguna.Gunakan
backgroundTint
atribut dalam tata letak.Jadi saya tambahkan
android:backgroundTint="#5677FC"
ke sayaTextView
. Masih tidak berguna. Kemudian saya mencoba untuk mengubahandroid:backgroundTintMode
kesrc_in
dansrc_atop
, dan mereka tidak pernah membuat perbedaan.
Jadi, bagaimana saya bisa mengubah warna riak saat saya gunakan ?attr/selectableItemBackground
sebagai latar belakang. Saya hanya fokus pada Lollipop ke atas. Terima kasih sebelumnya!
colorControlHighlight
alih-alihandroid:colorControlHighlight
berfungsi lebih baik untuk saya, selain itu hanya untuk v21 +clickable="true"
dan efek riak akan berfungsiEfek riak pada perangkat pra dan Lollipop +
harrane dan Liuting benar. Jawaban yang diterima bukanlah cara terbaik. Izinkan saya menunjukkan dalam kode cara mengubah warna riak untuk versi pra-Lollipop dan yang lebih tinggi
AppTheme Anda harus mewarisi dari tema AppCompat apa pun dan berisi atribut colorControlHighlight (tanpa awalan 'android:')
Tampilan Anda harus berisi clickable = "true" (atau harus memiliki pendengar klik yang disetel secara terprogram) dan latar belakang harus "? Attr / selectableItemBackgroundBorderless" atau "? Attr / selectableItemBackground":
Catatan: jika tampilan induk memiliki latar belakang putih, Anda tidak akan melihat efek riak karena warnanya putih. Ubah nilai colorControlHighlight untuk warna lain
Selain itu, jika Anda menginginkan warna riak yang berbeda pada aktivitas yang berbeda, Anda dapat menyetel tema pribadi untuk setiap aktivitas dalam file Manifes, misalnya:
Warna riak yang berbeda untuk fragmen berbeda dalam aktivitas yang sama?
Anda dapat mengubah atribut Tema Aktivitas untuk setiap fragmen dalam waktu proses. Timpa saja sebelum fragmen digelembungkan dengan gaya kustom Anda dan terapkan ke Tema saat ini:
di values / styles.xml
Kemudian, dalam fragmen Anda sebelum inflasi
onCreateView()
:Gaya ini hanya akan berfungsi untuk fragmen ini
Warna riak berbeda untuk Tampilan berbeda? (Lollipop +)
Anda dapat mengubah warna riak untuk setiap tampilan secara terpisah menggunakan
colorControlHighlight
atribut, ini tidak akan berfungsi jika Anda menerapkannya ke tampilan secara langsung:Anda harus menerapkannya sebagai tema:
PS Juga, terkadang pendekatan ini membantu jika Anda memiliki masalah yang tidak diketahui dengan riak dan Anda tidak dapat mengetahuinya. Dalam kasus saya, saya menggunakan lib geser pihak ketiga yang mengacaukan efek riak untuk seluruh tata letak dan menambahkan secara eksplisit tema ini ke semua tampilan yang dapat diklik berhasil bagi saya.
sumber
Ini menunjukkan efek riak dengan warna pada API +21, dan latar belakang abu-abu sederhana saat ditekan untuk API -21. Tambahkan gaya ini:
Dan atur ke tampilan:
sumber
android:theme
dan bukan yang biasa digunakan orangstyle
.Jawaban yang diterima salah.
Cara yang benar untuk menggunakan adalah apa yang Liuting sebutkan dalam komentar. Gunakan
colorControlHighlight
alih-alihandroid:colorControlHighlight
untuk mengubah defaultcolorControlHighlight
dariAppCompat
* Silakan merujuk ke http://android-developers.blogspot.co.uk/2014/10/appcompat-v21-material-design-for-pre.html di bagian Tema *
sumber
Gunakan langkah-langkah di bawah ini:
your_layout.xml
styles.xml
sumber
Kode ini berfungsi untuk saya membuat riak:
Saya tidak menemukan cara apa pun untuk mengubah atribut selectableItemBackground. Itu sebabnya saya melakukannya seperti di atas.
sumber
Dalam aplikasi tema hitam gelap (Atau lainnya) coba gunakan seperti di bawah ini, buat pertama
ripple_effect.xml
didrawable
folder dan tambahkan kode sukalalu atur latar belakang ke tampilan Apa saja seperti
Linear layout, Button, TextView
dll.sumber
Gunakan atribut latar depan sebagai selectableItemBackground dan atribut latar belakang sebagai warna yang Anda inginkan.
sumber
How can I modify ripple color when using ?attr/selectableItemBackground as background?