在做Android应用开发时,会碰到imageView尺寸小,用户难点击的情况,所以在不改变imageView大小情况,对其点击区域进行扩大。这里有两种方法可实现。

方法一:在imageView的xml布局中设置如下:
1.android:scaleType=“centerInside” 该属性表示若图片宽高等于或小于ImagevView的宽高,直到将图片的内容完整居中显示。
2.图片资源使用src不能用background,否则图片会被拉伸: android:src="@mipmap/…"
3.根据情况设置点击区域大小:android:layout_width="" android:layout_height=""

<ImageViewandroid:id="@+id/iv_back"android:layout_width="60dp"android:layout_height="60dp"android:scaleType="centerInside"android:src="@mipmap/fragment_batch_back" />

如图所示:白色方框都可以点击,android:layout_width="" android:layout_height=""属性控制它的大小。

原控件点击区域:

设置后:

调整边距:android:paddingLeft="-30dp"

方法二:在代码中实现,用于已指定图片大小不能更改android:layout_width="" android:layout_height=""属性。
在原view四边增加区域:

    /*** 扩大view的点击区域 单位px* 一个parent布局只能设置一个view;点击区域超出parent的部分无效;view要先visible** @param view* @param top* @param bottom* @param left* @param right*/public static void expandTouchArea(final View view, final int top, final int bottom, final int left, final int right) {final View parentView = (View) view.getParent();parentView.post(new Runnable() {@Overridepublic void run() {Rect rect = new Rect();view.getHitRect(rect);rect.top -= top;rect.bottom += bottom;rect.left -= left;rect.right += right;parentView.setTouchDelegate(new TouchDelegate(rect, view));}});}

例如:
控件已经设置好大小,无法使用方法一:

<ImageViewandroid:id="@+id/iv_allSelect"android:layout_width="26dp"android:layout_height="26dp"android:src="@mipmap/fragment_batch_select" />

使用:

private ImageView mAllSelectIv;
mAllSelectIv = rootView.findViewById(R.id.iv_allSelect);expandTouchArea(mAllSelectIv,40,40,40,40);

注意方法二有很多约束:
1.一个parent布局只能设置一个view,设置多个后只有最后设置的view生效。
2.设置区域超出parent的那部分区域会无效;
3.view要可见,要注意fragment的UI绘制完成周期
若想在一个父布局扩大多个View的点击区域,可以在view嵌套一个RelativeLayout或LinearLayout布局,这样就一个父布局对应一个View,但是考虑到布局的性能优化,要尽量少嵌套。合理解决方法是:方法一和方法二灵活运用,也可以叫美工设计尺寸合适的图片后在用方法一。

本博客是参考网上有关知识并总结下来的,希望对你有帮助!

Android扩大控件的点击区域相关推荐

  1. Swift 在父控件上给子控件拓展点击区域

    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {let offset = -20let vie ...

  2. JCameraView 仿微信拍照Android控件(点击拍照,长按录小视频)

    使用方法 Gradle依赖: compile 'cjt.library.wheel:camera :1.1.9' 引用源码 :  clone源码后 引入lib -> camera 尝试运行 : ...

  3. android 录制视频过程中拍照,GitHub - 616852636/CameraView: 仿微信拍照Android控件(点击拍照,长按录小视频)...

    JCameraView 控件介绍 这是一个模仿微信拍照的Android开源控件,主要的功能有如下: 点击拍照. 前后摄像头的切换. 长按录视频(视频长度为10秒内). 长按录视频的时候,手指上滑可以放 ...

  4. Android控件默认点击效果

    Android控件默认点击效果 Android最简单的默认点击效果: android:background="?android:attr/selectableItemBackground&q ...

  5. Android开源控件收集整理

    一 .基本控件 TextView HTextView 一款支持TextView文字动画效果的Android组件库.GitHub - hanks-zyh/HTextView: Animation eff ...

  6. Android 原生控件之一 TextView

    Android 原生控件之一 TextView 前言 来源 开始 XML属性 1.android:allowUndo 2.android:autoLink 3.android:autoSizeMaxT ...

  7. Android 开源控件与常用开发框架开发工具类

    Android的加载动画AVLoadingIndicatorView 项目地址: https://github.com/81813780/AVLoadingIndicatorView 首先,在 bui ...

  8. 详细Android studio 控件对齐方式

    控件对齐方式 请移步:常用的控件设置 格式大全 记忆方法 根据命名规则可以很轻松地理解并记忆每个格式的作用: gravity: 重力; above : 在--上面; Bottom : 底部:末端: a ...

  9. 日历控件的android代码,Android日历控件PickTime代码实例

    Android日历控件PickTime代码实例 发布时间:2020-10-03 16:05:51 来源:脚本之家 阅读:86 作者:手撕高达的村长 最近做项目,需要设置用户的生日,所以做这样一个功能. ...

最新文章

  1. 如何设计系统的错误码及错误信息
  2. favorites 不是一个有效的短文件名
  3. 关闭Wordpress修订功能,清除“Revision”的方法
  4. Java基础--成员变量和局部变量(区别、重名问题)
  5. AtomicInteger 的使用
  6. HDoj-1863-畅通project-并查集
  7. 真香 | 谁说的 StringJoiner 不好!真香警告……
  8. B 站神曲 damedane:精髓在于换脸,五分钟就能学会
  9. P3032 [USACO11NOV]二进制数独Binary Sudoku
  10. c#位数不够0补充完_人教版四年级上册数学第六单元《除数是两位数的除法》
  11. mysql建立索引_MySQL 索引及优化实战(一)
  12. 苏阳乐队杭州巡演后记
  13. 2016年末总结--感谢你们的存在
  14. java实现26个大写字母的遍历
  15. VMware虚拟机装系统出现Units specified dont exist
  16. 六年级下计算机教案封面,六年级下册信息技术教案21279(43页)-原创力文档
  17. 批量更改Excel文件中大量工作表的内容(修改公司一千多份excel表格)
  18. word-spacing letter-spacing white-space 分辨
  19. 国内食品品牌策划公司排名,食品品牌设计公司哪家好?2021最新
  20. linux终端窗口没标题栏,登录后所有窗口看不到标题栏且不能拖动

热门文章

  1. 【python】 selenium中webdriver对网页标签的查找
  2. 控制台 钢铁雄心2_《钢铁雄心2》游戏秘籍指令/科技/事件代码2、事件代码
  3. 如何让普通电脑变服务器 让外网访问内网的tomcat
  4. ubuntu实时监测显卡使用信息
  5. 解决警告——有符号 无符号不匹配
  6. 吹爆!阿里新产Spring源码高级笔记,原来看懂源码如此简单
  7. android busybox 路径,Android Install busybox
  8. python的selenium自动化测试公路_selenium+python自动化测试
  9. 领扣LintCode问题答案-55. 比较字符串
  10. 十款非常好用的的HTML生成工具推荐