使用“是/否”对话框拦截链接LinkMovementMethod

时间:2018-05-14 20:13:44

标签: android linkmovementmethod

我在TextView中建立了一个标准LinkMovementMethod,用于在用户触摸链接时推送某种类型的网络活动。但是,我想建立一个"你想看到链接"对话而不是直接将用户带到网页。我试过重写触摸方法,但这一切都有点令人费解。一点帮助?

1 个答案:

答案 0 :(得分:1)

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

  • 创建自定义跨度:更复杂,但您可以完成更多自定义文本,其中包含可点击的部分(或粗体,不同颜色等)。要了解详情,请查看ClickableSpanSpannableStringBuilder
  • 扩展LinkMovementMethod 以接受自定义点击监听器

在我看来,第二种解决方案在像你这样的基本情况下更好。以下是如何做到这一点:

  1. 将此java类:InternalLinkMovementMethod复制到您的项目
  2. 添加将TextView的链接移动方法设置为此自定义方法,提供单击侦听器:
  3. 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));