首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

可以响应各个方向CompoundDrawables点击操作的TextView的施用

2012-07-27 
可以响应各个方向CompoundDrawables点击操作的TextView的使用本文主要介绍如何使用一个可以响应各个方向Co

可以响应各个方向CompoundDrawables点击操作的TextView的使用

本文主要介绍如何使用一个可以响应各个方向CompoundDrawables点击操作的TextView。关于其实现原理见可以响应各个方向CompoundDrawables点击操作的TextView的实现原理。


TextView可以通过setCompoundDrawablesWithIntrinsicBounds在TextView内容的上下左右添加图片方便用户的需要,但默认并没有提供设置点击这些图片后响应操作的接口。本文介绍自己自定义的一个TextView达到此效果,主要功能为设置TextView各个方向图片的响应。

首先让我们看下效果

可以响应各个方向CompoundDrawables点击操作的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。

?

?

?

?

热点排行