Java 在插入变量之前从资源中获取字符串长度
在我的一个Java 在插入变量之前从资源中获取字符串长度,java,android,string,Java,Android,String,在我的一个文本视图中我想将一些文本设置为粗体字体,如下所示: 为了做到这一点,我使用以下方法: final SpannableStringBuilder sb = new SpannableStringBuilder(itemView.getContext().getResources().getString( R.string.ActivityIShared_with, sharedTo.get( getAdapterPosition() ) )); final StyleSpan bss
文本视图中
我想将一些文本设置为粗体字体,如下所示:
为了做到这一点,我使用以下方法:
final SpannableStringBuilder sb = new SpannableStringBuilder(itemView.getContext().getResources().getString( R.string.ActivityIShared_with, sharedTo.get( getAdapterPosition() ) ));
final StyleSpan bss = new StyleSpan(android.graphics.Typeface.BOLD);
sb.setSpan(bss, 0, 11, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
tv_SharedWith.setText(sb);
在哪里
与%1$s共享
正如您所看到的,这段代码是有效的。但是,我需要手动计算R.string.activity的长度,直到%1$s
的部分为11,以便将其加粗
也许过几天,我会改变那个句子,我想避免每次都数它的长度
如果没有sharedTo.get(getAdapterPosition())
,如何获取它的长度?不带变量的字符串
谢谢不用这样做,您可以在字符串中使用粗体标记并以HTML格式显示它。请参见下面的代码
String text=itemView.getContext().getResources().getString(R.String.ActivityIShared_with,sharedTo.get(getAdapterPosition))代码>
SpannableStringBuilder样式字符串代码>
if(SDK_INT>N)styledString=(SpannableStringBuilder)Html.fromHtml(,Html.FROM_Html_MODE_COMPACT)else styledString=(SpannableStringBuilder)Html.fromHtml(result)
tv_Sharewith.setText(styledString.toString())代码>据我所知,您基本上是在尝试使用某种样式来连接字符串。您可以尝试直接解决您的问题,只需稍加修改
添加此方法
public static SpannedString buildString(String boldText, String regularText) {
final SpannableStringBuilder builder = new SpannableStringBuilder();
int start = builder.length();
builder.append(boldText);
builder.setSpan(new StyleSpan(BOLD), start, builder.length(), SPAN_INCLUSIVE_EXCLUSIVE);
builder.append(regularText);
return new SpannedString(builder);
}
改变
<string name="ActivityIShared_with">Shared with: %1$s</string>
这样,您就不必计算引用活动的文本长度了。
您尝试过regex吗?`String mydata=“String with:1s$s”;Pattern=Pattern.compile(“^[A-Za-z,]+:”;Matcher Matcher=pattern.Matcher(mydata);`诸如此类的东西,您需要将模式作为静态变量,因为这会消耗大量的每次编译
<string name="ActivityIShared_with">Shared with: %1$s</string>
<string name="ActivityIShared_with">Shared with:</string>
buildString(context.getString(R.string.ActivityIShared_with), sharedTo.get(getAdapterPosition()));