我有文字“ Android 是一个软件堆栈”。在此文本中,我想将“ 堆栈”文本设置为可点击。因此,如果您单击它,它将重定向到一个新活动(不在浏览器中)。
我试过了,但我没有得到解决方案。
原文由 naresh 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有文字“ Android 是一个软件堆栈”。在此文本中,我想将“ 堆栈”文本设置为可点击。因此,如果您单击它,它将重定向到一个新活动(不在浏览器中)。
我试过了,但我没有得到解决方案。
原文由 naresh 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一个 kotlin 扩展(如果文本重复则不起作用)
textView.makeTextClickable(
contentText = "Hello world",
clickableText = "world",
isBoldText = true,
onClick = {
openPageInBrowser(BuildConfig.PRIVACY_POLICY_URL)
}
)
internal fun TextView.makeTextClickable(
contentText: String,
clickableText: String,
onClick: () -> Unit,
isUnderlineText: Boolean = false,
isBoldText: Boolean = false
) {
val spannableString = SpannableString(contentText)
val clickableSpan = object : ClickableSpan() {
override fun onClick(widget: View) {
onClick()
}
override fun updateDrawState(ds: TextPaint) {
super.updateDrawState(ds)
ds.isUnderlineText = isUnderlineText
ds.isFakeBoldText = isBoldText
}
}
val clickableTextStartIndex = text.indexOf(clickableText)
val clickableTextEndIndex = clickableTextStartIndex + clickableText.length
spannableString.setSpan(
clickableSpan,
clickableTextStartIndex,
clickableTextEndIndex,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
)
this.text = spannableString
this.movementMethod = LinkMovementMethod.getInstance()
}
原文由 Yevhenii 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答933 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
1 回答814 阅读✓ 已解决
2 回答926 阅读
2 回答863 阅读
1 回答800 阅读
1 回答851 阅读
android.text.style.ClickableSpan
可以解决你的问题。在 XML 中: