情况
我的布局中有一堆带有波纹效果的ImageButton。对于API <21,我创建了选择器来替代波纹。
Ripple API <21
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/shape_circle_red" android:state_pressed="true" />
<item android:drawable="@color/transparent" />
</selector>
shape_circle_red
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadius="10dp"
android:shape="oval">
<size
android:width="20dp"
android:height="20dp" />
<solid android:color="@color/red" />
</shape>
ImageButton
<ImageButton
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/ripple_red"
android:src="@drawable/ic_button1" />
问题
在API> = 21时,正常纹波可以正常工作。但是在API <21上,我的自建波纹效果被拉伸到ImageButton的大小。换句话说,因为我的ImageButton的宽度和高度不相等,所以圆圈显示为椭圆形。
问题
我如何才能防止涟漪延伸到ImageButton的大小
到目前为止我尝试过的事情
-将背景设置为可绘制对象,而不是通过id
-我的ImageButton上的android:adjustViewBounds =“ false”
-我的ImageButton上的android:scaleType =“ centerInside”