如何在android Textview上使用斜杠创建可点击的url链接
我正在使用“setMovementMethod”在TextView上创建一个可点击的url。最好查看以下代码:如何在android Textview上使用斜杠创建可点击的url链接,android,url,textview,clickable,Android,Url,Textview,Clickable,我正在使用“setMovementMethod”在TextView上创建一个可点击的url。最好查看以下代码: 1. String value = "By signing up, you agree to our <a href=\"https://app.mywebsite.com/terms\">My App Term</a> and confirm that you have read our <a href=\"https://app.mywebsite.c
1. String value = "By signing up, you agree to our <a href=\"https://app.mywebsite.com/terms\">My App Term</a> and confirm that you have read our <a href=\"https://app.mywebsite.com/privacypolicy\">Privacy Policy</a>";
2. TextView text = (TextView) findViewById(R.id.text);
3. text.setText(Html.fromHtml(value));
4. text.setMovementMethod(LinkMovementMethod.getInstance());
1。String value=“通过注册,您同意我们的并确认您已阅读我们的”;
2.TextView text=(TextView)findViewById(R.id.text);
3.text.setText(Html.fromHtml(value));
4.setMovementMethod(LinkMovementMethod.getInstance());
问题在于url的“.com”后面的斜杠。如果我删除斜杠,然后像那样写url,那么它工作得很好,但是当我像那样写url时,链接就不能点击了。我可以看到突出显示的链接,但当点击链接时,它就不起作用了
我怎样才能解决这个问题?非常感谢。首先
String value = "By signing up, you agree to our <a href="https://app.mywebsite.com/terms">My App Term</a> and confirm that you have read our <a href="https://app.mywebsite.com/privacypolicy">Privacy Policy</a>";
String value=“通过注册,您同意我们的并确认您已阅读我们的”;
是非法的,因为-您不允许使用双引号,即“在另一个双引号内”
因此,正确的形式应该是:
String value = "By signing up, you agree to our <a href='https://app.mywebsite.com/terms'>My App Term</a> and confirm that you have read our <a href='https://app.mywebsite.com/privacypolicy'>Privacy Policy</a>";
String value=“通过注册,您同意我们的并确认您已阅读我们的”;
当我进行此更改时,我可以单击链接,否则代码甚至无法编译
其次,检查构建版本并使用Html.fromHtml(string,int)
更多信息如下:创建一个如下所示的函数:
fun applyHtmlToTextView(tv: TextView?, html: String) {
if (tv == null)
return
tv.movementMethod = LinkMovementMethod.getInstance()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
tv.text = Html.fromHtml(html, Html.FROM_HTML_MODE_COMPACT)
} else {
tv.text = Html.fromHtml(html)
}
}
将字符串添加到string.xml
文件中,如下所示:
<string name="lb_your_string"><![CDATA[<a href="https://google.com”>Google.</a>]]></string>
或者,您可以将值
变量编辑为:
String value = "By signing up, you agree to our <a href=https://app.mywebsite.com/terms>My App Term</a> and confirm that you have read our <a href=https://app.mywebsite.com/privacypolicy>Privacy Policy</a>"
String value=“通过注册,您同意我们的并确认您已阅读我们的”
已删除
\”
抱歉。我对原始代码中的每个双引号都进行了转义(\),但在这里看不到它。我像你所说的那样修改了代码(即使只有一个引号),但是如果(Build.VERSION.SDK_INT>=Build.VERSION_CODES.N){textview.setText(Html.fromHtml(value,Build.VERSION.SDK_INT));}或者{textview.setText(Html.fromHtml(value))}的话,它仍然不起作用(如果我去掉斜杠的话,它就起作用了)你在用哪个版本的android进行测试?我试过馅饼和10块,似乎有用。嗨,普里亚布拉塔。我正在安卓7和安卓10上测试。只有当我删除url上的斜杠时才有效。我感觉这个问题与其他问题有关。是否有可能复制该问题并将其放入git中?我无法重现这个问题。我发现了错误@Priyabrata。我们已经在Google Play控制台上配置了应用程序的url。当您在我们的域中单击url时,应用程序将打开。当我们点击链接时,什么都没有发生,因为我们已经在应用程序上了。我发现了创建新项目的错误。当我点击新应用程序上的url时,我发现原来的应用程序被打开了,而不是浏览器。是我的错。对不起大家。我将尝试此库来捕获url并能够打开它。很抱歉,我从服务器获取文本(值字符串)。我不能使用string.xml文件。@亚历克斯:我更新了我的答案。您可以要求后端人员更改消息。我希望它能帮助hanks@johnle,但我试图从后端删除\,但它只对url有效,没有斜杠。
String value = "By signing up, you agree to our <a href=https://app.mywebsite.com/terms>My App Term</a> and confirm that you have read our <a href=https://app.mywebsite.com/privacypolicy>Privacy Policy</a>"