android - 在 strings.xml 中定义的文本中的 SpannableString

标签 android

我将如何设置 SpannableString使用 strings.xml 中定义的字符串?

例如,我有:%s liked your post

那我做

SpannableString usernameSS = new SpannableString(username);
usernameSS.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 0, username.length(), 0);
getString(R.string.like_post, usernameSS);

但它不起作用 - 样式未应用,我知道我可以使用 HTML 的 <b><i>但是有没有一种方法可以做到这一点而不必求助于 HTML?因为稍后我可能需要通过 TextAppearanceSpan 插入更复杂的样式

最佳答案

是的,这里的顺序很重要:

String finalString = getString(R.string.like_post, username);
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(finalString); 
int startIndex = finalString.indexOf(username);
spannableStringBuilder.setSpannable(new StyleSpan(Typeface.BOLD_ITALIC), startIndex, startIndex + username.length(), 0);

应该这样做。请检查正确的开始/结束索引

关于android - 在 strings.xml 中定义的文本中的 SpannableString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29410105/

相关文章:

java - Android:缩放时管理位图内存不是一个选项

android - 如何获取 Android Gradle 插件正在使用的 R8 版本?

android - 在外部 SD 卡中创建文件

android - 在不同的 fragment 中使用相同的 AdMob 单元

android - 删除自定义操作栏上的左填充

java - 如何安装JDK和JRE

Android Fused Location 提供者迷路了

android - 如何创建类似于 instagram 的浏览选项卡的选项卡 View (类别)

Java 线程错误 IllegalThreadState 线程已经启动

android - "android:debuggable"与 DDMS 中的日志打印输出有什么关系?