2010-11-05 116 views
12

我有一个ImageView,我希望它是可点击的。图像本身只有32x32像素,但我希望可点击区域更大,因此更容易点击。我希望我可以设置布局边距值增加的ImageView可点击区域的大小:使用填充扩展ImageView的可点击区域?

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

这并不工作,有什么我可以做的就是重建图像资源大约有较大的透明区域它。这有点烦人,因为如果我需要更改可点击区域,很难调整。这不仅仅是一个PNG,它是一个statelistdrawable,所以如果我需要调整可点击区域,我必须调整3个不同的PNG。

我还能做什么?

感谢

+0

此解决方案可能适合您:http://stackoverflow.com/questions/3475350/how-to-set-a-clickable-region-for-an-imageview – McStretch 2010-11-05 17:09:09

+1

我知道这已经被回答,但在这些情况下,你想使用TouchDelegate:http://developer.android.com/reference/android/view/TouchDelegate.html – 2012-02-10 21:34:25

回答

6

建议(从来没有尝试过自己):

  1. 创建的ImageView,只要你想不是把图像成其为大,不进行缩放

    ImageView.setScaleType(ImageView.ScaleType.CENTER). 
    
  2. 蛮力的方法:创建新的更大的png,其中原始图像居中,其余部分透明。

+0

结束了与蛮力方法。 – user291701 2010-11-05 19:00:26

+0

ImageView.setScaleType(ImageView.ScaleType.CENTER)不适用于我。无论如何,它把所有的东西都缩小了。 – thekindofme 2011-10-04 04:14:12

+0

@thekindofme如果您在ImageView上使用android:background而不是android:src,则添加填充将缩放图像。 – JP2014 2015-07-03 20:15:48

24

使用填充。如果为了在视图的边界之外插入空间而使用布局边界。

平等填充在各方面

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

或设置填充每侧

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

希望帮助!

+0

填充最适合这种情况! – deathemperor 2014-02-26 10:38:27

+0

我只是试过填充的东西,它确实有效 – sports 2015-06-02 21:26:18

+0

这个答案应该被标记为正确的! – GeertVc 2017-11-11 13:36:25

6

而是调整图像(彼得Knego的答案),或增加填充(柴门的答案)的建议与scaleType="center"设置组合minWidthminHeight属性:

<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的最小可点击尺寸,并且图像始终可以很好地显示。