Pre- ve Lollipop + cihazlarında dalgalanma etkisi
harrane ve Liuting haklı. Kabul edilen cevap en iyi yol değil. Lollipop öncesi ve üstü sürümler için dalgalanma renginin nasıl değiştirileceğini kodda göstermeme izin verin
AppTheme'iniz herhangi bir AppCompat temasından miras almalı ve colorControlHighlight niteliği içermelidir ('android:' öneki olmadan)
<!-- Application theme. -->
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="colorControlHighlight">#40ffffff</item>
</style>
Görünümünüz clickable = "true" içermeli (veya programlı olarak ayarlanmış bir tıklama dinleyicisine sahip olmalıdır) ve arka plan "? Attr / selectableItemBackgroundBorderless" veya "? Attr / selectableItemBackground" olmalıdır:
<LinearLayout
...
android:clickable="true"
android:background="?attr/selectableItemBackgroundBorderless"/>
Not: Ebeveyn görünümünüzün arka planı beyazsa, beyaz olduğu için dalgalanma etkisini görmezsiniz. Farklı bir renk için colorControlHighlight değerini değiştirin
Ayrıca, farklı etkinliklerde farklı dalga renkleri istiyorsanız, Manifest dosyasındaki her etkinlik için kişisel tema ayarlayabilirsiniz, örneğin:
<activity
android:name="com.myapp.GalleryActivity"
android:theme="@style/RedRippleTheme"
/>
Aynı aktivitede farklı parçalar için farklı dalgalanma renkleri?
Çalışma zamanındaki her parça için Etkinlik Temasının niteliklerini değiştirebilirsiniz. Parça, özel stilinizle şişirilmeden önce bunların üzerine yazın ve mevcut bir Temaya uygulayın:
içinde değerleri / styles.xml
<style name="colorControlHighlight_blue">
<item name="colorControlHighlight">@color/main_blue_alpha26</item>
</style>
Ardından, enflasyondan önceki parçanızda onCreateView()
:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
getContext().getTheme().applyStyle(R.style.colorControlHighlight_blue, true); //blue ripple color
View view = inflater.inflate(R.layout.my_fragment_layout, container, false);
return view;
}
Bu tarz sadece bu parça için çalışacak
Farklı Görünümler için farklı dalgalanma rengi? (Lolipop +)
colorControlHighlight
Özniteliği kullanarak her görünüm için dalga rengini ayrı ayrı değiştirebilirsiniz,
bunları doğrudan bir görünüme uygularsanız çalışmaz :
<TextView
...
colorControlHighlight="#40ffffff"/> <!-- DOESN'T WORK -->
bunu bir tema olarak uygulamalısın:
<TextView
...
android:theme="@style/colorControlHighlight_blue"/>
Not: Bazen bu yaklaşım, dalgalanma ile ilgili bilinmeyen sorunlarınız varsa ve çözemiyorsanız yardımcı olur. Benim durumumda, tüm düzen için dalgalanma efektlerini bozan ve bu temayı benim için çalışılan tüm tıklanabilir görünümlere açıkça ekleyen 3. taraf sürgülü kitaplık kullandım.
colorControlHighlight
yerine kullanınandroid:colorControlHighlight
, yoksa yalnızca v21 + için