package com.gh.common.view; import android.text.Spannable; import android.text.method.LinkMovementMethod; import android.view.MotionEvent; import android.view.ViewGroup; import android.view.ViewParent; import android.widget.TextView; public class CustomLinkMovementMethod extends LinkMovementMethod { @Override public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event) { boolean b = super.onTouchEvent(widget, buffer, event); //解决点击事件冲突问题 if (!b && event.getAction() == MotionEvent.ACTION_UP) { ViewParent parent = iterateViewParentForClicking(widget.getParent());//处理widget的父控件点击事件 if (parent != null && parent instanceof ViewGroup) { return ((ViewGroup) parent).performClick(); } } return b; } private ViewParent iterateViewParentForClicking(ViewParent parent) { if (parent instanceof ViewGroup) { if (((ViewGroup) parent).hasOnClickListeners()) { return parent; } else { return iterateViewParentForClicking(parent.getParent()); } } return null; } public static CustomLinkMovementMethod getInstance() { if (sInstance == null) sInstance = new CustomLinkMovementMethod(); return sInstance; } private static CustomLinkMovementMethod sInstance; }