From f4666415ca5158a16b18e1c7c6ecc8037ea2ef64 Mon Sep 17 00:00:00 2001 From: zzqgork <49156030+zzqgork@users.noreply.github.com> Date: Wed, 3 Apr 2019 17:46:41 +0800 Subject: [PATCH] [Android] Fire event when a-label with pseudo_ref is clicked. (#2271) If a label is with pseudo_ref , then it will just fire an event, not open a new page. Otherwise it will open a new page like normal a label do. --- .../weex/ui/component/richtext/node/ANode.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/richtext/node/ANode.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/richtext/node/ANode.java index 4bda872431..c61645f2b4 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/component/richtext/node/ANode.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/richtext/node/ANode.java @@ -22,6 +22,7 @@ import android.text.SpannableStringBuilder; import com.taobao.weex.ui.component.richtext.span.ASpan; +import com.taobao.weex.ui.component.richtext.span.ItemClickSpan; class ANode extends RichTextNode { @@ -53,10 +54,14 @@ protected boolean isInternalNode() { @Override protected void updateSpans(SpannableStringBuilder spannableStringBuilder, int level) { super.updateSpans(spannableStringBuilder, level); - if (attr != null && attr.containsKey(HREF)) { - ASpan aSpan = new ASpan(mInstanceId, attr.get(HREF).toString()); - spannableStringBuilder.setSpan(aSpan, 0, spannableStringBuilder.length(), - createSpanFlag(level)); - } + if (attr != null && attr.containsKey(RichTextNode.PSEUDO_REF)) { + ItemClickSpan itemClickSpan = new ItemClickSpan(mInstanceId, mComponentRef, attr.get(RichTextNode.PSEUDO_REF).toString()); + spannableStringBuilder.setSpan(itemClickSpan, 0, spannableStringBuilder.length(), + createSpanFlag(level)); + } else if (attr != null && attr.containsKey(HREF)) { + ASpan aSpan = new ASpan(mInstanceId, attr.get(HREF).toString()); + spannableStringBuilder.setSpan(aSpan, 0, spannableStringBuilder.length(), + createSpanFlag(level)); + } } }