我有一个ImageView,我希望它可以点击。图像本身只有32x32像素,但我希望可点击区域更大,因此更容易击中。我希望我可以设置布局边距值来增加imageview的可点击区域的大小:
<ImageView
layout_width="32dip"
layout_height="32dip"
layout_margin="20dip" />
这不起作用,我能做的就是重新创建图像资源,使其周围有一个更大的透明区域。这有点烦人,因为如果我需要更改可点击区域,很难调整。它不仅仅是一个png,它是一个statelistdrawable,所以如果我需要调整可点击区域,我必须调整3个不同的png。
我能做的其他事情吗?
由于
答案 0 :(得分:28)
使用填充。如果要在视图边界外插入空格,则使用布局边距。
所有方面的填充
<ImageView
android:padding="20dip" />
或在每一侧设置填充
<ImageView
android:paddingLeft="10dip"
android:paddingRight="15dip"
android:paddingTop="23dip"
android:paddingBottom="12dip" />
希望有所帮助!
答案 1 :(得分:7)
我建议将minWidth
和minHeight
属性与scaleType="center"
结合使用,而不是调整图像大小(Peter Knego的答案)或增加填充(Saimon的答案):
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="40dp"
android:minHeight="40dp"
android:scaleType="center"
android:src="@drawable/your_image" />
确保小图像的尺寸至少为40x40dp,而如果图像尺寸较小,则图像不会按比例放大。如果有一天图像将被另一个大于minWidth
和minHeight
的图像替换,那么当它缩小时,它将不会大于40x40dp。因此,始终保证40x40dp的最小可点击尺寸,并且图像始终显示良好。
答案 2 :(得分:6)
建议(从未尝试过):
根据需要创建ImageView,而不是将图像放入其中而不进行缩放
ImageView.setScaleType(ImageView.ScaleType.CENTER).
蛮力方法:创建新的较大的png,其中原始图像居中,其余部分是透明的。
答案 3 :(得分:0)
使用方式如下;宽度/高度是您的触摸半径
<ImageView
android:id="@+id/editProfile"
android:layout_width="32dp"
android:layout_height="32dp"
android:padding="8dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:src="@drawable/ic_edit"
android:scaleType="fitCenter"
/>
在上面的代码中,我希望我的src大小被视为24dp宽度/高度。且触摸半径为32dp。所以我用了8dp的填充。