如何在 android 中的同一文本视图中使用粗体和普通文本?
how to have bold and normal text in same textview in android?
我已经在互联网上搜索并尝试了以下代码,但它不起作用
SpannableString ss1 = new SpannableString("Health: ");
ss1.setSpan(new android.text.style.StyleSpan(android.graphics.Typeface.BOLD), 0, ss1.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textview1.setText("\n"+ss1+strhealth+"\n\n");
我希望输出是这样的
健康:好
其中 strhealth = 好
不过是出来了卫生:好
什么错误?
我正在使用 android studio 2.1.1
我认为您应该使用 2 个不同的 textView,一个标签和一个用于数据。这是常见的好做法
最简单的方法是
textview1.setText(Html.fromHtml("<b>Health:</b> good"));
您的代码中的错误是在此处使用字符串连接:"\n"+ss1+strhealth+"\n\n"
删除了所有格式,因为组件被视为普通字符串。
我会使用这样的字符串资源:
<string name="health_status"><b>Health:</b> %1$s</string>
当您想设置健康状态时,只需使用此代码:
String ss1 = getString(R.string.health_status, strhealth);
String txt1="Health: ";
SpannableString txtSpannable= new SpannableString(txt1);
StyleSpan boldSpan = new StyleSpan(Typeface.BOLD);
txtSpannable.setSpan(boldSpan, 0, 8, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.append(txtSpannable);
String txt2="good";
builder.append(txt2);
textview1.lblStatus.setText(builder, TextView.BufferType.SPANNABLE);
我来晚了回答,但是我使用这里已经提供的答案创建了一个易于使用的方法。
private void setSpanString(String string1, String string2, TextView textView) {
SpannableStringBuilder builder=new SpannableStringBuilder();
SpannableString txtSpannable= new SpannableString(string1);
StyleSpan boldSpan = new StyleSpan(Typeface.BOLD);
txtSpannable.setSpan(boldSpan, 0, string1.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.append(txtSpannable);
builder.append(string2);
textView.setText(builder, TextView.BufferType.SPANNABLE);
}
在科特林中,你可以做到这一点。我用它在字符串中加粗 characters/word 。例如:
item = "Philippines"
query = "Phil"
result = Philippines
val spannable = SpannableString(item)
val indexStart = item.indexOf(query)
val indexEnd = indexStart + query.length
spannable.setSpan(StyleSpan(Typeface.BOLD), indexStart, indexEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
并像这样使用它
textView.text = spannable
下面我已经提到了你可以在 Kotlin 中创建 spannableString 的代码
val spannableStringBuilder = SpannableStringBuilder()
val boldSpan: StyleSpan = StyleSpan(Typeface.BOLD)
sp_text.setSpan(boldSpan, firstIndex, lastIndex,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
sp_text.setSpan(clickableSpan, firstIndex, lastIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
sp_text.setSpan(ForegroundColorSpan(ContextCompat.getColor(mContext, R.color.colorPrimary)), firstIndex, lastIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
我已经在互联网上搜索并尝试了以下代码,但它不起作用
SpannableString ss1 = new SpannableString("Health: ");
ss1.setSpan(new android.text.style.StyleSpan(android.graphics.Typeface.BOLD), 0, ss1.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textview1.setText("\n"+ss1+strhealth+"\n\n");
我希望输出是这样的 健康:好
其中 strhealth = 好 不过是出来了卫生:好 什么错误?
我正在使用 android studio 2.1.1
我认为您应该使用 2 个不同的 textView,一个标签和一个用于数据。这是常见的好做法
最简单的方法是
textview1.setText(Html.fromHtml("<b>Health:</b> good"));
您的代码中的错误是在此处使用字符串连接:"\n"+ss1+strhealth+"\n\n"
删除了所有格式,因为组件被视为普通字符串。
我会使用这样的字符串资源:
<string name="health_status"><b>Health:</b> %1$s</string>
当您想设置健康状态时,只需使用此代码:
String ss1 = getString(R.string.health_status, strhealth);
String txt1="Health: ";
SpannableString txtSpannable= new SpannableString(txt1);
StyleSpan boldSpan = new StyleSpan(Typeface.BOLD);
txtSpannable.setSpan(boldSpan, 0, 8, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.append(txtSpannable);
String txt2="good";
builder.append(txt2);
textview1.lblStatus.setText(builder, TextView.BufferType.SPANNABLE);
我来晚了回答,但是我使用这里已经提供的答案创建了一个易于使用的方法。
private void setSpanString(String string1, String string2, TextView textView) {
SpannableStringBuilder builder=new SpannableStringBuilder();
SpannableString txtSpannable= new SpannableString(string1);
StyleSpan boldSpan = new StyleSpan(Typeface.BOLD);
txtSpannable.setSpan(boldSpan, 0, string1.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.append(txtSpannable);
builder.append(string2);
textView.setText(builder, TextView.BufferType.SPANNABLE);
}
在科特林中,你可以做到这一点。我用它在字符串中加粗 characters/word 。例如:
item = "Philippines"
query = "Phil"
result = Philippines
val spannable = SpannableString(item)
val indexStart = item.indexOf(query)
val indexEnd = indexStart + query.length
spannable.setSpan(StyleSpan(Typeface.BOLD), indexStart, indexEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
并像这样使用它
textView.text = spannable
下面我已经提到了你可以在 Kotlin 中创建 spannableString 的代码
val spannableStringBuilder = SpannableStringBuilder()
val boldSpan: StyleSpan = StyleSpan(Typeface.BOLD)
sp_text.setSpan(boldSpan, firstIndex, lastIndex,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
sp_text.setSpan(clickableSpan, firstIndex, lastIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
sp_text.setSpan(ForegroundColorSpan(ContextCompat.getColor(mContext, R.color.colorPrimary)), firstIndex, lastIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)