可以响应各个方向CompoundDrawables点击操作的TextView的使用
本文主要介绍如何使用一个可以响应各个方向CompoundDrawables点击操作的TextView。关于其实现原理见可以响应各个方向CompoundDrawables点击操作的TextView的实现原理。
TextView可以通过setCompoundDrawablesWithIntrinsicBounds在TextView内容的上下左右添加图片方便用户的需要,但默认并没有提供设置点击这些图片后响应操作的接口。本文介绍自己自定义的一个TextView达到此效果,主要功能为设置TextView各个方向图片的响应。
首先让我们看下效果
点击最下面的图片响应如上,执行结果为显示“Bottom”的Toast,可以下载Demo代码CompoundDrawablesTextViewDemo编译运行。
1、引入公共库
引入 TrineaAndroidCommon GoogleCode或(TrineaAndroidCommon Git)作为android项目的公共类,或是自己抽取其中的CompoundDrawablesTextView部分使用
2、在xml中配置
用现在的CompoundDrawablesTextView替换原来的TextView即可
<com.trinea.common.view.CompoundDrawablesTextViewandroid:id="@+id/textWithImage"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="3dp"/>
3、在java类中调用
主要是设置TextView的CompoundDrawables和DrawableClickListener
CompoundDrawablesTextView textWithImage = (CompoundDrawablesTextView)this.findViewById(R.id.textWithImage);
textWithImage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.image, R.drawable.image, R.drawable.image, R.drawable.image);
textWithImage.setDrawableClickListener(new ImageClickListener());class ImageClickListener implements DrawableClickListener {@Overridepublic void onClick(DrawablePosition position) {switch (position) {case LEFT:// 左边图片被点击的响应Toast.makeText(context, "left", Toast.LENGTH_SHORT).show();break;case RIGHT:// 右边图片被点击的响应Toast.makeText(context, "right", Toast.LENGTH_SHORT).show();break;case BOTTOM:// 底部图片被点击的响应Toast.makeText(context, "bottom", Toast.LENGTH_SHORT).show();break;case TOP:// 上边图片被点击的响应Toast.makeText(context, "top", Toast.LENGTH_SHORT).show();break;default:break;}}
}
可以根据自己需要补充上面switch中的响应函数即可
4、其他设置
4.1 设置图片可响应点击区域允许的误差
setLazy(int, int)表示设置Drawable可响应的点击区域x和y方向允许的误差,正数表示点击范围向外扩展,负数表示点击范围向内收缩
4.2 设置是否同时被点击的Drawable都响应
setAllDrawableTouchedResponse(boolean),表示是否所有被touch的Drawable都响应事件,true表示都响应,false表示按照左上右下的顺序响应第一个点击范围内的Drawable
注意:若点击的位置同时在多个图片的有效范围内,响应顺序为左上右下,设置 setAllDrawableTouchedResponse(boolean)为false后就按顺序响应第一个,其他被点击图片的响应忽略。
4.3 设置是否始终响应OnClickListener
setAlwaysClick(boolean)表示是否始终响应OnClickListener,true表示响应Drawable后依然响应OnClickListener,false表示响应Drawable后不再响应OnClickListener。
转载于:https://www.cnblogs.com/trinea/archive/2012/06/18/2557201.html
可以响应各个方向CompoundDrawables点击操作的TextView的使用相关推荐
- iOS设置键盘上Return按键及点击操作
想要修该iOS键盘上Return按钮的样式变为搜索,并且监听它被点击了,做出响应, 先设置Return按键的样式, textField.returnKeyType = UIReturnKeySearc ...
- Unity 模拟鼠标点击操作
有个奇奇怪怪的BUG,需要定时模拟鼠标点击 就想到了这个骚操作. C#本身带的类库中没有关于鼠标操作的函数库,需要引用微软的dll. 重点需要引入user32.dll,可以在C:\Windows\Sy ...
- python写界面输入测试脚本_python+Selenium自动化测试——输入,点击操作
这是我的第一个真正意思上的自动化脚本. 1.练习的测试用例为: 打开百度首页,搜索"胡歌",然后检索列表,有无"胡歌的新浪微博"这个链接 2.在写脚本之前,需要 ...
- php 模拟鼠标点击,Python全局模拟鼠标点击操作(以至善网无聊评价点击作为案例)...
Python全局模拟鼠标点击操作(以至善网无聊评价点击作为案例) 环境 python3 依赖 PyAutoGUI 简介 PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动 ...
- 刷新浏览器后不进行任何点击操作时,不播放声音 | 解决方案(VUE-Element)
以下代码可能过长,请耐心查阅 前言 最近项目中有播放背景声音的一个功能,后面发现刷新浏览器后,不对页面进行任何点击操作,浏览器不播放声音.作为一个后端开发,突然搞这么一个前端解决方案是有点懵逼的,下面 ...
- Appium 点击操作梳理
Appium框架的客户端脚本中执行UI操作的原理是:脚本中需要执行UI操作时,会发送一条http请求(请求数据中包括了控件相关信息)到Appium的服务器,服务器再把接收到的数据转义一下,然后转发给安 ...
- 雷蛇鼠标的宏录制:鼠标位置和点击操作的记录
雷蛇鼠标的宏录制:鼠标位置和点击操作的记录 下图提示了,是否录制屏幕的绝对位置:
- Android中区分滑动和点击操作
问题:在Android应用中,如何区分用户的操作是点击操作还是滑动操作. 答: 当用户对应用内一个View控件操作时,我们在程序中对View进行绑定Touch事件的监听(android.view.Vi ...
- Python爬虫(7)selenium3种弹窗定位后点击操作,解决点击登录被隐藏iframe无法点击的登陆问题
之前的文章有关于更多操作方式详细解答,本篇基于前面的知识点进行操作,如果不了解可以先看之前的文章 Python爬虫(1)一次性搞定Selenium(新版)8种find_element元素定位方式 Py ...
最新文章
- 技术人生:如何成为一位优秀的程序员
- WebSockets 简介
- 计算机硬件:内存常识知多少?内存知识盲区详解
- 远程过程调用失败_Java开发大型互联网RPC远程调用服务实现之问题处理方案
- 教你两种数据库覆盖式数据导入方法
- MFC | 基于文档存储的学生成绩信息管理系统
- 【教程搬运】廖雪峰Git的使用教程(二)
- 自动驾驶:车道线检测、车速检测、实时通行跟踪、基于视频的车辆跟踪及流量统计
- 深度实战Electron,开发本地音乐播放器
- 2012MDCC中国·移动开发者大会 邀请函
- 牛逼程序员职业提升必看的书
- NVIDIA apex安装
- vue報錯 To install it, you can run: npm install --save vue/types/umd
- register at least one qt version using“qt vs tools“->“qt options“
- 4.测试基础(软件测试阶段的划分)
- 英国全能数学家John Conway因新冠去世,他曾发明风靡一个时代的电脑游戏,还能心算万年历...
- ODI KM二次开发手册
- qml之Repeater
- 【MyBatis】进一步理解choose、when、otherwise标签
- phpcms mysql设置,PhpCms数据库管理设置教程 如何设置PhpCms数据库
热门文章
- oracle getsqltxt函数,Oracle 性能优化的基本方法概述(2)
- 神策数据桑文锋:让销售回归科学
- 情人节,你们的CEO都在干嘛?
- 在Linux上自动调整屏幕亮度保护眼睛
- 用HTTP协议连接网络(HttpURLConnection)
- Cubieboard2裸机开发之(四)定时器操作
- Delphi XE2 之 FireMonkey 入门(10) - 常用结构 TPoint、TPointF、TSmallPoint、TSize、TRect、TRectF 及相关方法...
- Discovery Session
- python for in list
- virtual background for conference