`
zeroblue
  • 浏览: 47217 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android TextView 给文本中指定片段添加自定义点击事件

阅读更多
package wq.test;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.view.View;
import android.widget.TextView;

public class AndroidTestActivity extends Activity
{
	private final String stringToShow = "test,test,test,test,test,test,test,test,test,test,test,test," +
			"test,test,test,test,test,test,test,test,test,test,test,test,test,test" +
			",test,test,test,test,test,test,test,test,test,test,test,test,test,test" +
			"testtest test test...";
	private final String readMore = "Read More";

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		this.setContentView(R.layout.main);
		TextView tv = (TextView) this.findViewById(R.id.textView);
		ClickableSpan clickableSpan = new ClickableSpan() {
			@Override
			public void onClick(View widget) {
				if (widget instanceof TextView) {
					((TextView) widget).setText(stringToShow + stringToShow);
				}
			}
		};
		setClickableSpanForTextView(tv, clickableSpan, stringToShow + readMore, stringToShow.length(), stringToShow.length() + readMore.length());
	}

	/**
	 * 
	 * @param tv TextView
	 * @param clickableSpan Click event
	 * @param text Text to show
	 * @param start Start point in text for handle click event
	 * @param end End point in text for handle click event
	 */
	private void setClickableSpanForTextView(TextView tv, ClickableSpan clickableSpan, String text, int start, int end) {
		SpannableString sp = new SpannableString(text);
		sp.setSpan(clickableSpan, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
		tv.setText(sp);
		tv.setLinkTextColor(Color.RED);
		tv.setMovementMethod(LinkMovementMethod.getInstance());
		tv.setFocusable(false);
		tv.setClickable(false);
		tv.setLongClickable(false);
	}
}
分享到:
评论

相关推荐

    android textview 指定片段添加点击事件

    在Android开发中,TextView是用于...以上就是关于在Android中为TextView指定片段添加点击事件的详细过程。在实际开发中,这个技巧可以广泛应用于创建可点击的链接、按钮或其他交互元素,为用户提供更丰富的交互体验。

    Android-TextView-富文本-html图片显示.rar

    在Android开发中,`TextView` 是一个非常基础且重要的组件,通常用于展示纯文本内容。然而,当开发者需要在文本中插入图片或者实现更复杂的格式时,`TextView` 的功能就显得有些不足。针对这种情况,Android 提供了...

    Android TextView使用SpannableString设置复合文本的方法详解

    在实际开发中,开发者可以根据需求选择合适的Span类型,通过setSpan方法将它们应用到特定的文本片段上,从而实现TextView的复合文本展示。这种方式极大地增强了TextView的灵活性,让UI设计更加丰富多样。同时,由于...

    Android垂直滚动TextView跑马灯Demo

    跑马灯效果在Android中通常是通过自定义View或者对现有控件进行扩展来实现的,而在这个Demo中,我们将重点讨论如何在TextView中实现垂直滚动的效果。 首先,TextView是Android中最基础的文本显示控件,它通常用于...

    安卓Android源码——textView根据长度自动换行.zip

    这个压缩包"安卓Android源码——textView根据长度自动换行.zip"很可能包含了一个示例项目或代码片段,演示了如何在TextView中实现根据文本长度自动换行的功能。 在Android的TextView中,自动换行是默认开启的。当你...

    一个可以展示Html内容的的自定义TextView.zip

    Spanned对象是Android中的一个接口,它支持富文本格式,可以包含不同样式和属性的文本片段。通过将HTML标签解析为Spanned,我们可以保留原始HTML的格式,如字体颜色、大小、粗体、斜体等,并在TextView中正确地呈现...

    自定义对话框并响应点击事件

    // 添加点击事件监听器 buttonOk.setOnClickListener(v -> { Toast.makeText(this, "确定被点击", Toast.LENGTH_SHORT).show(); // 在这里处理确定操作的逻辑 builder.getDialog().dismiss(); // 关闭对话框 }...

    安卓textView相关-TextView中文本的处理.rar

    这个压缩包文件"安卓textView相关-TextView中文本的处理.rar"可能包含了关于如何在TextView中处理中文文本的一些示例或代码片段,虽然未提供具体的代码细节,但我们可以根据常见的需求来探讨TextView处理中文文本的...

    Android定制控件:带图标有颜色TextView、可编辑文本框

    在标准的Android TextView中,通常只能显示纯文本,但通过自定义控件,我们可以扩展其功能,使其能够显示图标和文本。这可以通过继承TextView并重写onDraw()方法来实现。在onDraw()方法中,我们需要绘制图标和文本。...

    Android双色配置TextView功能类demo

    5. **渲染视图**:最后,在布局中添加这个自定义的TextView,并传入ColorPhrase对象,让其根据数据自动渲染双色文本。 此外,这个demo可能还包含了如何在Activity或Fragment中实例化和使用这个自定义的TextView,...

    Android-CircleTextView(圆形文字View)

    在Android开发中,我们经常需要创建一些自定义的视图来满足界面设计的独特需求。`CircleTextView`就是这样一个特殊的视图,它将普通的TextView包裹在一个圆形的布局中,使得文字围绕圆形边缘显示。这种效果常用于...

    Android中为TextView添加超链接的代码清单.pdf

    下面将详细解释如何在Android中为TextView添加超链接,并给出代码清单。 首先,为了实现超链接,我们需要创建一个自定义的ClickableSpan类,这个类继承自ClickableSpan,重写其onClick方法,以处理点击事件。以下是...

    Android-FlexibleRichTextView可以显示LaTeX图片代码的TextView

    在Android应用开发中,文本的输入与显示是十分常见的需求,尤其在教育、科学计算或者技术分享类的应用中,有时我们需要展示复杂的数学公式或者代码片段。`Android-FlexibleRichTextView`是一个专门为此目的设计的库...

    TextView加载网络图片HTMLIMG

    6. **自定义TextView**:如果你需要更复杂的功能,如图片点击事件,或者更精细的控制,可以考虑自定义一个TextView,扩展它的功能以支持加载网络图片。 总之,要在TextView中加载网络图片,我们需要处理HTML解析、...

    安卓textView相关-通过改变TextView实现跑马灯效果并且触摸滑动时可以拖动文字.rar

    总结来说,这个压缩包文件提供了一种在Android中实现跑马灯效果和拖动文字的方法,开发者可以通过学习这些代码片段,了解如何自定义TextView以实现更丰富的交互功能。在实际应用中,开发者可能需要根据具体需求对...

    textview span

    例如,我们可以创建一个 `URLSpan` 来使文本片段看起来像超链接,并处理点击事件。`Span` 是通过 `Spanned` 接口实现的,它包含了多个 `Span` 对象的集合,而 `Spannable` 接口则提供了对这些 `Span` 进行添加、删除...

    安卓自定义TextView.zip

    在这个自定义TextView中,我们可以添加一个内部的ScrollView,然后监听手势滑动事件。这可以通过实现`OnTouchListener`接口并覆写`onTouchEvent()`方法来实现。当用户滑动时,我们可以改变TextView的可见区域,使...

    仿微信底部菜单栏(ViewPager+ImagerView+TextView)

    5. **底部菜单栏事件处理**:为ImageView和TextView添加点击监听器,当用户点击某个选项时,更新ViewPager的当前页面,并相应地改变选中状态的视觉反馈。可以使用`OnPageChangeListener`监听ViewPager的页面切换,...

    部分textview字体颜色不同ColorPhrase-master.zip

    5. **自定义属性**:为了方便在XML布局中使用自定义的`TextView`,可以定义自定义属性,如颜色数组,这样用户就可以在XML中直接指定不同颜色的文本片段。 6. **测量与布局**:当文本颜色变化时,可能会影响`...

Global site tag (gtag.js) - Google Analytics