【问题标题】:How to make deep link string clickable in android TextView如何在 android TextView 中使深层链接字符串可点击
【发布时间】:2016-03-15 05:14:10
【问题描述】:

如何在 android TextView 中制作可点击的深层链接字符串,例如“myapp://product/123”。我知道有自动链接选项,如电子邮件、网络和电话,但没有任何深度链接选项。如何使其可点击并启动点击该链接的意图?

【问题讨论】:

  • 使用android:autoLink="web"属性怎么样?
  • 没用...因为它不是网络链接
  • 这意味着您正在尝试使TextView 中的某些特定单词可点击?
  • 没有。我试图使深层链接字符串可点击
  • 点击后我想明确意图并启动它,以便我可以转到使用相同意图过滤器和类别注册的特定活动

标签: android textview deep-linking


【解决方案1】:

你可以使用ClickableSpan来做到这一点

例如。

ClickableSpan clickableSpan = new ClickableSpan() {
    @Override
    public void onClick(View textView) {
        startActivity(new Intent(MyActivity.this, NextActivity.class));
    }
    @Override
    public void updateDrawState(TextPaint ds) {
            super.updateDrawState(ds);
            ds.setUnderlineText(false);
        }
};

查看此链接How to set the part of the text view is clickable

【讨论】:

    【解决方案2】:

    只需在 java 文件中编写如下代码即可。您可以点击 textview 中的任何链接。

    TextView t2 = (TextView) findViewById(R.id.text2);
    t2.setMovementMethod(LinkMovementMethod.getInstance());
    

    【讨论】:

    • 感谢您的帮助。但这没有帮助
    • 仅适用于 http/https 方案。
    【解决方案3】:

    就用这个

    YourTextView.setMovementMethod(LinkMovementMethod.getInstance());
    

    【讨论】:

    • 感谢您的回答.. 但这没有帮助
    • 如果您在 xml 布局中添加了 android:autoLink="web",则删除该属性并尝试。
    【解决方案4】:

    https://stackoverflow.com/a/13509741/2914140,我写过类似的:

    val url = "myapp://example.com/some_string"
    textView.text = url
    textView.setOnClickListener {
        startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
    }
    

    AndroidManifest 中你甚至不需要<uses-permission android:name="android.permission.INTERNET" />

    如果你有应用,响应myappscheme和example.comhost,就会打开。

    要格式化textView like a link 还要写:

    textView.hyperlinkStyle()
    
    
    private fun TextView.hyperlinkStyle() {
        setText(
            SpannableString(text).apply {
                setSpan(
                    URLSpan(""),
                    0,
                    length,
                    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
                )
            },
            TextView.BufferType.SPANNABLE
        )
    }
    

    【讨论】:

      猜你喜欢
      • 2018-03-16
      • 2012-03-13
      • 2016-04-07
      • 2011-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多