尝试在这里做一些非常简单的事情,并查看了一堆SO资源,但无济于事。我试图在使用drawable
类型为的背景的按钮上获得涟漪效果shape drawable
。相关文件:
background_button:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="1px"
android:color="#80ffffff" />
<solid android:color="@android:color/transparent" />
</shape>
ripple.xml的内部drawable-v21
文件夹:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?attr/colorControlHighlight">
<item android:drawable="@drawable/background_button"/>
</ripple>
Button.xml:
<Button
android:id="@+id/login_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_weight="1"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:background="@drawable/ripple"
/>
怎么了 谢谢!
我的建议是不要使用<ripple
标签。我有两个原因:准确地执行您想要的操作并不容易,并且.xml
每个背景必须有2个不同的文件。我不喜欢有drawable-v21
文件夹。
我的解决方案是将您的Button
withFrameLayout
和useandroid:foreground
属性包装起来。这样,您可以拥有所需的任何背景,并且可以保持波纹效果。
<FrameLayout
android:id="@+id/login_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_weight="1"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:foreground="?attr/selectableItemBackground">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_button"/>
</FrameLayout>
请注意,我已将所有属性和ID移至FrameLayout
。您应将设置onClickListener
为FrameLayout
而不是Button
。
顺便说一句,?attr/selectableItemBackground
太好了。尽可能使用它。对于从Android 4.0到4.3的旧设备,它将用灰色替换蓝色的Holo颜色。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句