如何在android TextView中使深层链接字符串可单击

时间:2016-03-15 05:14:11

标签: android textview deep-linking

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

4 个答案:

答案 0 :(得分:2)

你可以使用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

答案 1 :(得分:0)

只需要在java文件中创建如下所示的代码。也可以点击文本视图中的任何链接。

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

答案 2 :(得分:0)

请使用此

YourTextView.setMovementMethod(LinkMovementMethod.getInstance());

答案 3 :(得分:0)

看着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)))
}

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

如果您有一个应用程序,它对myapp方案和example.com主机作出响应,则会将其打开。

要格式化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
    )
}