【问题标题】:How handle 2 link click in textview use string resources? [duplicate]如何处理 textview 中的 2 链接点击使用字符串资源? [复制]
【发布时间】:2021-03-04 05:38:30
【问题描述】:

我有一些带有 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个链接在一个句子中或需要使用另一种方法?

附:我需要捕获单独的 2 次点击以发布分析事件。

【问题讨论】:

标签: java android kotlin


【解决方案1】:

我在我的应用程序中使用了如下所述。

字符串.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" />

Kotlin 代码

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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    相关资源
    最近更新 更多