Android扩大ImageView的点击范围

1 篇文章 0 订阅

开发时,我们经常使用ImageView显示图片,然后设置点击事件,但是会碰到一种情况,就是当图片很小时ImagView的点击区域很小,用户不容易点击到某个ImageView,那么我们怎么样在不改变图片大小的情况下,扩大ImageView的点击区域呢?
通常情况下ImageView的布局写法:

    <ImageView
        android:background="@mipmap/ic_launcher"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

这种写法就是图片多大,点击范围就多大。如果图片太小或者手机的分辨率较高,就会导致ImageView不容易被点击。
改进:

    <ImageView
        android:scaleType="centerInside"
        android:src="@mipmap/ic_launcher"
        android:layout_width="40dp"
        android:layout_height="40dp"/>

这种写法就是设置了ImageView的大小,这个大小区域(40dp)就是ImageViwe的有效的点击区域,可以根据自己的情况修改大小。需要注意的是: 要使用 src 不能使用background 否则图像会被拉伸,并且要设置ImageView的这个属性
android:scaleType=“centerInside”
这个属性的作用:
(1)当图片大于ImageView的宽高:以图片的中心和ImageView的中心点为基准,按比例缩小图片,使图片宽高等于或者小于ImagevView的宽高,直到将图片的内容完整居中显示。
(2)当图片小于ImageView的宽高:直接居中显示该图片。
这样我们就保证了图像不被拉伸,并且点击范围扩大的效果。
但是这样每次都设置ImageView的centerInside属性还是不方便,这里我想到了ImageButton。

   <ImageView
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:src="@mipmap/ic_launcher"
        />

    <ImageButton
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:src="@mipmap/ic_launcher"
        />

都这样写的情况下,ImageView会根据设置的具体宽高尺寸变化,但是ImageButton只会显示图片的原始像素大小.
因此我们最终采用这种写法:

    <ImageButton
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:src="@mipmap/ic_launcher"
        />

这样可以不拉伸图片,写法简单,也可以有效扩大图片的点击范围。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值