`
lynen
  • 浏览: 128129 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

Android TextView中增加超链接的匹配后,导致非超链接区域点击失效的问题解决方案

 
阅读更多

android.widget.TextView中可以增加超链接的处理,在增加超链接处理后,加入此TextView是作为ListView中的item的原素出现,有可能会影响ListView本身的一些click事件,此问题的解决方案如下
设置android.widget.TextView的LinkMovementMethod,其中判断是否是处于链接区域,示例代码如下:

 

textView.setMovementMethod(new LinkMovementMethod(){
        		@Override
        	    public boolean onTouchEvent(TextView widget, Spannable buffer,
        	                                MotionEvent event) {
        			isTextClickAreaLink = false;
        			int action = event.getAction();
        			//点击开始的时候,判断用户点击区域是否是链接
        			if (action == MotionEvent.ACTION_UP){
        				int x = (int) event.getX();
        	            int y = (int) event.getY();

        	            x -= widget.getTotalPaddingLeft();
        	            y -= widget.getTotalPaddingTop();

        	            x += widget.getScrollX();
        	            y += widget.getScrollY();

        	            Layout layout = widget.getLayout();
        	            int line = layout.getLineForVertical(y);
        	            int off = layout.getOffsetForHorizontal(line, x);

        	            ClickableSpan[] link = buffer.getSpans(off, off, ClickableSpan.class);

        	            if (link.length != 0) {
        	                if (action == MotionEvent.ACTION_UP) {
        	                	isTextClickAreaLink = true;
        	                }
        	            }
        			}
        			super.onTouchEvent(widget, buffer, event);
        			return true;
        		}
        	});

 设置成功后,在手工设置TextView的OnClickListener事件,示例代码:

textView.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View view) {
				if(!isTextClickAreaLink){
					listView.performItemClick(view);
				}
			}});

 

 

分享到:
评论
1 楼 mzba520 2013-09-06  
这样会导致拖动列表的时候,只要有链接长按事件会被触发。

相关推荐

    Android TextView中文字设置超链接、颜色、字体

    当我们在TextView的文本中插入URL时,可以使用`android:autoLink="web"`属性,让系统自动识别并转换为可点击的超链接。但这种方法可能无法满足所有需求,例如自定义链接样式。此时,我们可以使用`SpannableString`和...

    TextView中文字超链接,点击启动另一个Activity 源码

    本篇将详细介绍如何实现TextView中的文字超链接,并在点击后启动另一个Activity的源码解析。 首先,我们需要了解TextView中的`android:autoLink`属性。这个属性允许我们自动识别并链接化文本中的URL、电子邮件地址...

    TextView实现超链接的四种方式

    在Android开发中,TextView是用于显示文本的基本组件。在许多应用中,我们可能需要在TextView中展示带有超链接的文本,比如显示帮助文档、显示网页链接或者电子邮件等。本篇文章将详细探讨如何在TextView中实现...

    Android如何通过TextView实现超链接的跳转

    当需要在TextView中嵌入超链接并实现点击跳转时,开发者通常会利用Android的`TextView`特性和`Linkify`类来完成这一功能。下面我们将详细介绍如何通过TextView实现超链接的跳转,并结合提供的`HyperLinkDemo`示例...

    TextView超链接自定义样式

    然而,有时候我们需要在`TextView`中展示带有超链接的文本,让用户能够点击跳转到其他页面或执行特定操作。本篇将详细讲解如何在Android的`TextView`中实现超链接自定义样式,包括自定义字体颜色和去除超链接的...

    在TextView中添加超链接

    当需要在TextView中插入可点击的超链接时,有多种方法可以实现这一功能。以下是对这些方法的详细介绍: 1. **使用HTML文本** Android的TextView支持HTML格式的文本,可以通过`Html.fromHtml()`方法将HTML字符串...

    TextView上超链接可以点击.zip

    本示例"TextView上超链接可以点击.zip"提供了一个解决方案,使开发者能够轻松地在TextView中添加可点击的超链接,同时还能自定义链接的样式。 首先,我们需要理解`TextView`的基本用法。在XML布局文件中,我们可以...

    Android TextView添加超链接的方法示例

    在某些情况下,我们可能希望在TextView中添加超链接,以便用户能够点击这些链接进行交互,比如访问网页、拨打电话或发送电子邮件等。以下是如何在Android的TextView中添加超链接的详细方法。 首先,Android系统提供...

    解决Android原生TextView显示中英文等末尾参差不齐问题

    综上所述,解决Android原生TextView显示中英文等末尾参差不齐的问题,可以通过自定义字体、使用SpannableString、创建自定义TextView、利用第三方库、预处理文本、CSS样式以及调整Gravity属性等多种方式。...

    MTextView,解决Android TextView提前换行的问题

    在Android开发中,TextView是用于显示文本的基本组件,但有时候我们可能会遇到一个问题,那就是TextView在显示文本时可能会提前换行,这通常是由于图文混排、特殊字符或者特定字体大小导致的布局计算错误。为了解决...

    WebView跳转TextView中的超链接

    当用户点击TextView中的超链接时,我们希望能够像WebView那样跳转到对应的网页。这个功能实现起来并不复杂,主要涉及到了TextView的`movementMethod`属性和`Linkify`类的使用。 首先,让我们了解`movementMethod`...

    Android使用内置WebView打开TextView超链接的实现方法

    总结起来,Android中处理TextView超链接的方法主要有以下几种: 1. 使用`LinkMovementMethod`和`Html.fromHtml()`,但默认会启动外部浏览器。 2. 通过`SpannableStringBuilder`和`ClickableSpan`自定义点击事件,...

    android 设置textview中划线效果

    TextView是Android中最常用的用于显示文本的控件之一。而Paint对象则是用来控制文本绘制方式的对象,包括颜色、字体大小、样式等等。 1. **TextView**: TextView用于显示文本信息,可以通过多种属性来自定义其外观...

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

    在Android应用开发中,TextView是显示文本的重要组件,它可以用于展示纯文本、格式化文本以及包含超链接的文本。在某些场景下,我们可能需要在TextView中添加超链接,以便用户可以直接点击链接进行跳转或者执行其他...

    android TextView android TextView

    ### Android TextView与ListView的Transcript Mode属性详解 在Android开发过程中,经常需要用到各种视图组件来展示信息。其中,`TextView`和`ListView`是非常重要的两个组件。它们不仅用于简单的文本展示,还可以...

    解决 TextView 中文、英文、数字、符号 排版问题

    为了解决这些问题,开发者需要对TextView的属性进行调整或使用特定的解决方案。 首先,我们要理解Android系统默认的文本渲染机制。Android系统基于Unicode编码处理各种语言,但不同的语言和字符类型有不同的间距...

    Android TextView查看更多

    在Android开发中,`TextView`是用于展示文本的常用组件,它可以显示单行或多行文本。在特定场景下,为了优化用户体验,我们可能希望只显示文本的一部分,如果文本内容超出了预设的显示范围,就用"点击查看更多"这样...

    TextView解决自动换行问题

    本文将详细讲解如何在`TextView`中解决自动换行问题,并设置超过指定行数后使用省略号。 首先,我们需要了解`TextView`的一些关键属性: 1. `android:singleLine`:此属性在API 26及以下版本可用,当设置为`true`...

    Android开发之部分字符串可实现超链接点击事件的方法源码

    本文将深入探讨如何在Android中实现部分字符串的超链接点击事件,并提供相关的源码解析。 首先,Android提供了TextView和WebView两种主要方式来处理字符串中的超链接。对于TextView,我们可以通过设置...

Global site tag (gtag.js) - Google Analytics