使用填充扩展ImageView的可点击区域?

use*_*701 16 android

我有一个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)

希望有所帮助!


Lar*_*erg 8

而不是调整图像大小(Peter Knego的答案)或增加填充(Saimon的答案),我建议将minWidthminHeight属性设置为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的最小可点击尺寸,并且图像总是很好地显示.


Pet*_*ego 6

建议(从未尝试过):

  1. 根据需要创建ImageView,而不是将图像放入其中而不进行缩放

    ImageView.setScaleType(ImageView.ScaleType.CENTER).
    
    Run Code Online (Sandbox Code Playgroud)
  2. 蛮力方法:创建新的较大的png,其中原始图像居中,其余部分是透明的.

  • @thekindofme 如果您在 ImageView 上使用 android:background 而不是 android:src,则添加填充将缩放图像。 (2认同)