java - 如何处理 textview 中的 2 链接点击使用字符串资源?
问题描述
我有一些带有 2 个链接的文本,例如:“请阅读并接受我们的条款和隐私政策......”
<string name="terms_and_policy">... <a href='https://docs.google.com/document/d/xxx'><font color="#FC672B">**Terms**</font></a> and <a href='https://docs.google.com/document/d/xxx'><font color="#FC672B">**Privacy Policy**</font></a> ...</string>
可能处理 2 个链接使用这种情况,什么时候在一个句子中有 2 个链接或需要使用另一种方法?
PS 我需要单独点击 2 次才能发布分析事件。
解决方案
我在我的应用程序中使用了如下所述。
字符串.xml
<string name="about_fragment_privacy_policy" translatable="false">User Agreement and Privacy Policy</string>
布局.xml
<TextView
android:id="@+id/privacyPolicy"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/about_fragment_privacy_policy" />
科特林代码
string = getString(R.string.about_fragment_privacy_policy)
spannableString = SpannableString(string)
val clickableUserAgreement = object : ClickableSpan() {
override fun onClick(widget: View) {
startActivity(
Intent(Intent.ACTION_VIEW).setData(
Uri.parse(
"https://example.com"
)
)
)
}
}
val clickablePrivacyPolicy = object : ClickableSpan() {
override fun onClick(widget: View) {
startActivity(
Intent(Intent.ACTION_VIEW).setData(
Uri.parse(
"https://example.com"
)
)
)
}
}
spannableString.setSpan(
clickableUserAgreement,
0,
14,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
)
spannableString.setSpan(
ForegroundColorSpan(resources.getColor(R.color.colorPrimary)),
0,
14,
0
)
spannableString.setSpan(
clickablePrivacyPolicy,
19,
string.length,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
)
spannableString.setSpan(
ForegroundColorSpan(resources.getColor(R.color.colorPrimary)),
19,
string.length,
0
)
privacyPolicy.text = spannableString
privacyPolicy.movementMethod = LinkMovementMethod.getInstance()
推荐阅读
- java - 如果 Spring Boot 微服务失去 MSSQL DB 连接,如何实现电子邮件/文本通知
- python - Python 线程仅在从另一个模块调用时才有效
- python - 如何在烧瓶响应中返回分块的二进制数据?
- java - 是否可以在 MR 作业之外将数据写入 HDFS 并仍然使用 Hive 进行查询?
- java - java.lang.OutOfMemoryErrorPyRaisable: java.lang.OutOfMemoryError: Java heap space 运行 jupyter notebook 时如何解决?
- javascript - 如何在更改输入时产生过渡效果
- git - 无法解决与 git 子模块文件夹的合并冲突
- python - 将特殊字符写入 csv 文件时出现问题
- python-3.x - Appium & Python:如何移动到另一个应用程序?
- php - (Swift_TransportException(code: 0): Connection to tcp://server.example.com:465 Timed Out