使用 Yes/No 对话框拦截 link LinkMovementMethod

Intercept link LinkMovementMethod with a Yes/No dialog

我在 TextView 中建立了一个标准 LinkMovementMethod,用于在用户触摸 link 时推送某种类型的网络 Activity。但是,我想建立一个 "do you want to see the link" 对话框而不是将用户直接带到网页。我试过重写触摸方法,但一切都变得有点复杂。有点帮助?​​

您可以通过两种方式完成:

  • 创建自定义 Spans:更复杂,但您可以完成更多由可点击部分(或粗体、不同颜色等)组成的自定义文本。要了解更多信息,请查看 ClickableSpan and SpannableStringBuilder
  • 扩展 LinkMovementMethod 以接受自定义点击侦听器

在我看来,第二种解决方案在像您这样的基本情况下更好。方法如下:

  1. 将此 java class: InternalLinkMovementMethod 复制到您的项目
  2. 将您的 TextView 的 link 移动方法添加到此自定义方法,提供点击侦听器:
OnLinkClickedListener clickListener = new OnLinkClickedListener() {
    @Override
    public boolean onLinkClicked(String linkText) {
        // here you can handle your click, eg show the dialog
        // `linkText` is the text being clicked (the link)
        // return true if handled, false otherwise
    }
}

yourTextView.setMovementMethod(new InternalLinkMovementMethod(clickListener));