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

时间:2010-11-05 16:19:15

标签: android

我有一个ImageView,我希望它可以点击。图像本身只有32x32像素,但我希望可点击区域更大,因此更容易击中。我希望我可以设置布局边距值来增加imageview的可点击区域的大小:

<ImageView
   layout_width="32dip"
   layout_height="32dip"
   layout_margin="20dip" />

这不起作用,我能做的就是重新创建图像资源,使其周围有一个更大的透明区域。这有点烦人,因为如果我需要更改可点击区域,很难调整。它不仅仅是一个png,它是一个statelistdrawable,所以如果我需要调整可点击区域,我必须调整3个不同的png。

我能做的其他事情吗?

由于

4 个答案:

答案 0 :(得分:28)

使用填充。如果要在视图边界外插入空格,则使用布局边距。

所有方面的填充

  <ImageView
       android:padding="20dip" />

或在每一侧设置填充

<ImageView
     android:paddingLeft="10dip"
     android:paddingRight="15dip"
     android:paddingTop="23dip"
     android:paddingBottom="12dip" />

希望有所帮助!

答案 1 :(得分:7)

我建议将minWidthminHeight属性与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,而如果图像尺寸较小,则图像不会按比例放大。如果有一天图像将被另一个大于minWidthminHeight的图像替换,那么当它缩小时,它将不会大于40x40dp。因此,始终保证40x40dp的最小可点击尺寸,并且图像始终显示良好。

答案 2 :(得分:6)

建议(从未尝试过):

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

    ImageView.setScaleType(ImageView.ScaleType.CENTER).
    
  2. 蛮力方法:创建新的较大的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的填充。