本文主要介绍如何使用一个可以响应各个方向CompoundDrawables点击操作的TextView。关于其实现原理见可以响应各个方向CompoundDrawables点击操作的TextView的实现原理。
TextView可以通过setCompoundDrawablesWithIntrinsicBounds在TextView内容的上下左右添加图片方便用户的需要,但默认并没有提供设置点击这些图片后响应操作的接口。本文介绍自己自定义的一个TextView达到此效果,主要功能为设置TextView各个方向图片的响应。
首先让我们看下效果
点击最下面的图片响应如上,执行结果为显示“Bottom”的Toast,可以下载Demo代码CompoundDrawablesTextViewDemo编译运行。
1、引入公共库
引入
AndroidCommon@GoogleCode或(AndroidCommon@Git)作为android项目的公共类,或是自己抽取其中的CompoundDrawablesTextView部分使用
2、在xml中配置
用现在的CompoundDrawablesTextView替换原来的TextView即可
<com.trinea.common.view.CompoundDrawablesTextView
android: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 {
@Override
public 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。
- 大小: 56.7 KB
- 大小: 17.7 KB
分享到:
相关推荐
旋转TextView文字显示方向,可参考学习一下。
1、自动控制TextView内容长度的伸缩、显示与隐藏 2、响应对应控制图标的点击完成TextView的收缩、图标的切换 3、封装为工具,一键调用.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行...
EditText和Textview的部分文字响应
在TextView中长按可以复制textview的文本内容,经过验证,可以直接导入项目
TextView使用HTML处理字体样式、显示图片等
Android 文本类中字体颜色的改变,并可以相应点击事件
Android 点击TextView 改变背景色
实现TextView的点击效果,获得更好的用户 体验
我们在浏览网页时,网页的文本可以放大缩小,android两点手势,两点距离靠近时缩小,两点距离...那么若果不用android的WebView控件,单纯的TextView能否做到放大缩小呢,其实也是可以的。只要响应和处理手势事件即可。
TextView点击显示更多
TextView和Button的结合使用:点击按钮,返回点击次数
TextView文字多种颜色,多种字号,不同颜色点击响应不同事件
Android TextView 文字片点击特效、点击事件监听实现了TextView 文字片段 点击_长按 事件监听 以及点击特效关键技术 在自定义Span中对TextPaint的color、bgcolor等属性设置选中时的文字颜色,背景色、 在自定义...
安卓中的TextView 实现部分文字点击事件,通过Spannable 实现
android仿微博@人、http可点击,引用话题点击等;
android TextView android TextView
Android实现类似朋友圈评论的功能(TextView分段操作)
TextViewSpanLink 支持TextView上超链接可以点击,获取网址并跳转,支持特定文字的着色和处理,并且可以点击。 本代码直供学习使用;
android之点击自动滚动textview
RTMovementMethod: 继承自Android原生的LinkMovementMethod,重写onTouchEvent方法,优化了ClickSpan(点击响应的文字区域)的点击响应。 Resolver:一个接口,我们需要实现一种支持富文本类型