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