以前,我使用StateDrawable
来实现带阴影效果的自定义卡片视图 - https://stackoverflow.com/a/33829309/72437。这是由于CardView
的限制,因为cardBackgroundColor
无法接受选择器
现在,我想添加涟漪效果。我使用以下XML。
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#00ff00">
<item android:drawable="@drawable/statelist_item_background"/>
</ripple>
然而,这有副作用,绿色波纹延伸直到它接触阴影区域。
我想避免触摸阴影区域的绿色波纹。我尝试添加填充信息。
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#00ff00">
<item>
<shape android:shape="rectangle">
<padding android:top="10dp" android:right="10dp" android:bottom="10dp" android:left="10dp" />
</shape>
</item>
<item android:drawable="@drawable/statelist_item_background"/>
</ripple>
然而,它没有什么不同。在ripple
标记内添加填充信息没有任何区别。
我可以知道如何填充涟漪效果?
答案 0 :(得分:0)
您可以使用inset
标记来定义所需的填充。有一个inset
属性可以定义全局填充,也可以为每个方向定义4个属性。
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:inset="10dp">
<ripple
android:color="#00ff00">
<item android:drawable="@drawable/statelist_item_background"/>
</ripple>
</inset>
答案 1 :(得分:-3)
您应该将其添加到CarView:
<CardView
...
style="@style/MyCardViewStyle"
android:foreground="?attr/selectableItemBackground">
</CardView>
然后,以你的风格添加:
<style name="MyCardViewStyle">
<item name="colorControlHighlight">@color/my_awesome_color</item>
</style>
它会为你提供你想要的涟漪效果的绝佳颜色,而不必自己创建你的涟漪,并且会自动检测到界限,所以你不需要找到它是否可能为波纹添加填充。