用SpannableStringBuilder 的方式设置下划线并可以点击下划线内容:
//设置点击背景
//设置高亮,不设置这个,点击下划线内容会有一个背景颜色
iv_user_agreement.highlightColor =
resources.getColor(android.R.color.transparent)
var spannable = SpannableStringBuilder(getString(R.string.user_agreement))
var clickableSpan = object : ClickableSpan() {
override fun onClick(widget: View) {
//点击响应事件
}
//配置下划线
override fun updateDrawState(ds: TextPaint) {
//不要调用super 方法,否则会改变下划线字体颜色
//TextPaint 可以设置对应的内容
ds.isUnderlineText = true
}
}
//要触发点击事件必须设置这个
iv_user_agreement.movementMethod = LinkMovementMethod.getInstance()
spannable.setSpan(clickableSpan, 37, 54, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
//要第一次setText为spannable,否者无效
iv_user_agreement.text = spannable
以上,第一次setText一定是要为spannable,不可以在xml 中先设置text;必须设置setMovementMethod方法
网友评论