`
阅读更多

本文主要介绍如何使用一个可以响应各个方向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
分享到:
评论
2 楼 Trinea 2014-03-04  
shengjian5200 写道
请问这份源码还有吗?

https://code.google.com/p/trinea-code/
1 楼 shengjian5200 2014-03-04  
请问这份源码还有吗?

相关推荐

    旋转TextView文字显示方向

    在Android中,我们可以使用`android:rotation`属性来改变TextView的文字显示角度。这个属性允许我们指定一个角度值,TextView的内容将根据这个角度进行旋转。例如,如果设置`android:rotation="90"`,文字会垂直...

    EditText和Textview的部分文字响应

    - 使用`TextView`的`setMovementMethod()`方法,我们可以设置一个`LinkMovementMethod`,使得文本中的URL或其他特定格式的文本可以被点击。例如: ```java TextView textView = findViewById(R.id.textView); ...

    TextView的点击效果

    首先,我们可以使用Android SDK中的内置属性来设置TextView的基本点击效果。最常见的是通过`android:background`属性来更改TextView的背景颜色或使用一个自定义的形状资源。当TextView被点击时,系统会自动切换到...

    Android 点击TextView 改变背景色

    总结来说,实现Android中点击TextView改变背景色的功能,可以通过监听点击事件、设置颜色、使用属性动画、XML声明式监听以及使用StateListDrawable等多种方式。开发者可以根据项目需求和用户体验选择最适合的方法。...

    android中TextView高亮并可以点击

    2. **链接化文本**: 如果要使TextView中的URL或@用户名可点击,我们可以使用`android:autoLink="web"`或`android:autoLink="user"`属性。但是,这仅适用于标准的HTTP/HTTPS链接和邮箱地址,对于自定义格式,我们需要...

    安卓textView相关-1自动控制TextView内容长度的伸缩显示与隐藏2响应对应控制图标的点击完成TextView的收缩图标的切换3封装为工具一键调用.zip

    1、自动控制TextView内容长度的伸缩、显示与隐藏 2、响应对应控制图标的点击完成TextView的收缩、图标的切换 3、封装为工具,一键调用.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行...

    Android Textview颜色并可以点击

    除此之外,如果希望在XML布局文件中定义点击事件,可以使用`android:onClick`属性,如下: ```xml &lt;TextView android:id="@+id/myTextView" android:layout_width="wrap_content" android:layout_height="wrap_...

    TextView点击显示更多

    这个功能使得用户可以点击`TextView`,然后展开查看全部内容,提高用户体验。本篇文章将深入探讨如何实现`TextView`的点击显示更多功能,并通过示例代码`ShowMoreDemo`进行详解。 ### 1. 概述 `TextView`的点击...

    Android TextView 文字片点击特效、点击事件监听实现了TextView 文字片段 点击_

    Android TextView 文字片点击特效、点击事件监听实现了TextView 文字片段 点击_长按 事件监听 以及点击特效关键技术 在自定义Span中对TextPaint的color、bgcolor等属性设置选中时的文字颜色,背景色、 在自定义...

    Android长按TextView复制文本内容,可以直接使用

    在许多应用中,用户可能需要复制`TextView`中的文本以便稍后使用。Android系统提供了一个方便的功能,允许用户通过长按`TextView`来实现文本复制,而无需额外的复杂设置。本文将详细介绍如何实现这一功能,以及相关...

    TextView和Button的结合使用:点击按钮,返回点击次数

    通过这样的方式,我们可以实现简单的用户交互功能,让应用程序对用户的操作作出响应。在实际开发中,这个基础概念可以扩展到更复杂的逻辑,例如网络请求、数据库操作或者页面跳转等。理解`TextView`和`Button`的使用...

    Android实现类似朋友圈评论的功能(TextView分段操作)

    此外,还可以考虑添加触摸事件监听,使得用户可以点击用户名查看该用户的详细资料,或者长按评论进行复制、分享等操作。这需要用到TextView的setOnClickListener和OnLongClickListener,以及注册BroadcastReceiver来...

    TextView部分文字点击事件

    在许多情况下,我们可能希望实现TextView的部分文字具有可交互性,比如点击后触发特定的事件。这就需要用到Spannable类和它的子类,如SpannableString和SpannableStringBuilder。这些类允许我们在字符串的不同部分...

    Android 多个TextView文字横向自动滚动(可点击)

    然后,你可以通过监听`TextView`的`OnClickListener`事件来处理点击事件,当用户点击某个`TextView`时,可以弹出相应的详情页面或者执行其他操作。 下面是一段示例代码,展示了如何创建一个带有自动滚动和点击事件...

    同一个TextView不同文字的点击事件 demo

    注意,`TextView`的`clickable`属性默认为`false`,如果需要整个`TextView`都有响应,可以将其设置为`true`。同时,为了防止与`ClickableSpan`冲突,一般不需要再设置`OnClickListener`。 通过这种方式,我们可以...

    TextView中,设置指定部分文字改变颜色,和指定部分文字点击事件

    在Android开发中,`TextView`是用于展示文本的常用组件,它可以进行丰富的文本格式化和交互操作。在一些场景下,我们可能需要对`TextView`中的特定部分文字进行颜色变化,甚至为这部分文字添加点击事件,以实现更...

    android textview 部分文本变色,点击跳转

    综上所述,通过`SpannableString`和`ClickableSpan`,我们可以实现`TextView`中部分文本变色并响应点击事件的功能,使得用户在阅读文本的同时,也能轻松地进行交互。在实际项目中,可以根据需求进一步定制`...

    安卓textView相关-androidtextview点击文字收缩效果.rar

    3. 属性动画(Property Animation):这是对View进行更复杂动画操作的一种方式,可以与ViewPropertyAnimator一起使用。例如: ```java textView.animate().scaleX(0.5f).scaleY(0.5f).setDuration(200).start(); ``...

    TextView文字多种颜色,多种字号,不同颜色点击响应不同事件

    总的来说,通过`SpannableString`、`ForegroundColorSpan`、`ClickableSpan`以及`LinkMovementMethod`等工具,我们可以使`TextView`中的文本不仅有丰富的颜色和大小,还能响应不同的点击事件,提升用户交互体验。...

Global site tag (gtag.js) - Google Analytics