我正在制作笔记应用。我从设计开始,所以还没有任何代码。我制作了带有“ +”和渐变背景图像的按钮,但最终失去了波纹效果。我看到了一些类似的问题,但我什么都不懂。 如何恢复波纹效果?当前,它仅在图像上起作用,但是我希望在整个按钮(包括背景)上起作用。
add_button_design.xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<item>
<shape>
<gradient android:startColor="#706fd3" android:endColor="#34ace0" android:angle="45"/>
<corners android:radius="50dp"/>
<stroke android:width="1px" android:color="#227093"/>
</shape>
</item>
<item>
<bitmap android:src="@drawable/add_button_image"/>
</item>
<item>
<ripple android:color="?android:attr/colorControlHighlight">
<item android:drawable="@drawable/add_button_image"/>
</ripple>
</item>
</layer-list>
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" android:background="@color/colorPrimaryDark">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="75dp"
android:layout_height="75dp"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_margin="20dp"
android:background="@drawable/add_button_design"/>
</RelativeLayout>
</FrameLayout>
</RelativeLayout>
我知道这可以被视为重复的问题,但其他问题与我的计划不符。
请在selector
标签中添加ripple
。这是运行GIF。
这里是代码。
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<item>
<shape>
<gradient android:startColor="#706fd3" android:endColor="#34ace0" android:angle="45"/>
<corners android:radius="50dp"/>
<stroke android:width="1px" android:color="#227093"/>
</shape>
</item>
<item>
<bitmap android:src="@drawable/add_button_image"/>
</item>
<item>
<ripple android:color="?android:attr/colorControlHighlight">
<!--<item android:drawable="@drawable/add_button_image"/>-->
<selector>
<!-- unclick the background-->
<item
android:drawable="@drawable/add_button_image"
android:state_pressed="false" />
<!-- click the background-->
<item
android:drawable="@drawable/add_button_image"
android:state_pressed="true" />
</selector>
</ripple>
</item>
</layer-list>
使用@Leon基数,我设法修复了它。只需将所有内容放入Ripple标记
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<item>
<ripple android:color="?android:attr/colorControlHighlight">
<item>
<shape>
<gradient android:startColor="#706fd3" android:endColor="#34ace0" android:angle="45"/>
<corners android:radius="50dp"/>
<stroke android:width="1px" android:color="#227093"/>
</shape>
</item>
<item>
<bitmap android:src="@drawable/add_button_image"/>
</item>
</ripple>
</item>
</layer-list>