我有一个ImageView,我希望它可以点击.图像本身只有32x32像素,但我希望可点击区域更大,因此更容易击中.我希望我可以设置布局边距值来增加imageview的可点击区域的大小:
<ImageView
layout_width="32dip"
layout_height="32dip"
layout_margin="20dip" />
Run Code Online (Sandbox Code Playgroud)
这不起作用,我能做的就是重新创建图像资源,使其周围有一个更大的透明区域.这有点烦人,因为如果我需要更改可点击区域,很难调整.它不仅仅是一个png,它是一个statelistdrawable,所以如果我需要调整可点击区域,我必须调整3个不同的png.
还有什么我能做的吗?
谢谢
Sai*_*mon 28
使用填充.如果要在视图边界外插入空格,则使用布局边距.
在所有方面均等填充
<ImageView
android:padding="20dip" />
Run Code Online (Sandbox Code Playgroud)
或者在每一侧设置填充
<ImageView
android:paddingLeft="10dip"
android:paddingRight="15dip"
android:paddingTop="23dip"
android:paddingBottom="12dip" />
Run Code Online (Sandbox Code Playgroud)
希望有所帮助!
而不是调整图像大小(Peter Knego的答案)或增加填充(Saimon的答案),我建议将minWidth和minHeight属性设置为scaleType="center":
<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" />
Run Code Online (Sandbox Code Playgroud)
这样可以确保小图像的尺寸至少为40x40dp,而如果图像尺寸较小则不会放大尺寸.如果有一天图像将被另一个大于的图像替换,minWidth并且minHeight当它缩小时它将不会大于40x40dp.因此,总是保证40x40dp的最小可点击尺寸,并且图像总是很好地显示.
建议(从未尝试过):
根据需要创建ImageView,而不是将图像放入其中而不进行缩放
ImageView.setScaleType(ImageView.ScaleType.CENTER).
Run Code Online (Sandbox Code Playgroud)蛮力方法:创建新的较大的png,其中原始图像居中,其余部分是透明的.
| 归档时间: |
|
| 查看次数: |
17869 次 |
| 最近记录: |