Zba*_*ian 12 android hyperlink underline textview

我想使字符串"this link"加下划线和可点击,但我不知道如何实现.
XML文件:
<string name="submitText">Before you submit, please check out <u>this link</u></string>
Run Code Online (Sandbox Code Playgroud)
在我的片段中:
tvSubmit.setText(Html.fromHtml(getString(R.string.submitText)));
Run Code Online (Sandbox Code Playgroud)
我不希望整个字符串是可点击的,只有下划线部分.我不能使用LinearLayout2个单元格的水平,因为在较小的设备上,字符串不会有连续的外观,它将被分成2个单元格.
我试过了什么:
tvSubmit.setMovementMethod(LinkMovementMethod.getInstance());
Spannable sp = (Spannable) tvSubmit.getText();
ClickableSpan click = new ClickableSpan() {
@Override
public void onClick(View widget) {
showLink();
}
};
sp.setSpan(click, 0, sp.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Run Code Online (Sandbox Code Playgroud)
上面的代码使整个字符串加下划线,并且文本的颜色也变为浅蓝色.
Bla*_*elt 10
问题是您将跨度设置为整个字符串(sp.setSpan(click, 0, sp.length()).要解决此问题,您只需将可点击范围设置为this link.我这样做了同样的事情:
<string name="submitText">Before you submit, please check out %1$s</string>
<string name="this_link">this link</string>
Run Code Online (Sandbox Code Playgroud)
在你的活动中
String thisLink = getString(R.string.thisLink);
String yourString = getString(R.string.submitText, thisLink);
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(yourString);
spannableStringBuilder.setSpan(click,
startIndex, endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
Run Code Online (Sandbox Code Playgroud)
其中startIndex和endIndex是thisLinkin 的索引yourString.我把这两个字符串分开了,因为它更容易查找索引,特别是如果你必须处理翻译.要计算你可以使用的startIndex yourString.indexOf(thisLink),endIndex是startIndex + the length of thisLink.我会留给你普通的支票,(负面指数和其他一切可能导致的IndexOutBoundException)
| 归档时间: |
|
| 查看次数: |
12666 次 |
| 最近记录: |