【问题标题】:Create a Hyperlink using String resources使用字符串资源创建超链接
【发布时间】:2019-09-28 19:25:19
【问题描述】:

我尝试将 TextView 作为超链接。这个按预期工作:

content.text = "<a href=${args.article.url}>Content</a>".fromHtml()

但我收到关于使用字符串资源的 lint 警告。但是这个现在确实将 TextView 显示为超链接:

content.text = getString(R.string.content, args.article.url).fromHtml()

这是字符串资源:

<string name="content"><a href="%s">Content</a></string>

有没有办法使用字符串资源修复它?

@Suppress("DEPRECATION")
fun String.fromHtml() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    Html.fromHtml(this, Html.FROM_HTML_MODE_COMPACT)
} else {
    Html.fromHtml(this)
}

【问题讨论】:

  • 使用getText() 代替getString()/fromHtml(): stackoverflow.com/a/19311520/115145
  • @CommonsWare,当我使用getText(R.string.content, args.article.url).fromHtml() 时,我在args.article.url 下收到错误
  • 哦,对了,getText() 不支持占位符。您可以切换到单参数getText() 并使用TextUtils.expandTemplate()TextUtils.replace()
  • 是的,没错。谢谢。您可以分享您的答案,我将其标记为已接受。
  • 我建议你回答你自己的问题,展示你的结果!

标签: android hyperlink android-resources


【解决方案1】:

这是在 TextView 中设置文本的方法:

content.text = TextUtils.expandTemplate(getText(R.string.content), args.article.url).toString().fromHtml()

这是设置字符串资源的方法:

<string name="content"><![CDATA[ <a href="$s">Content</a>]]></string>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 2017-05-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    相关资源
    最近更新 更多