我声明了TextView
如下..
<TextView
android:id="@+id/cc_journal_survey_next_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="Next Survey: %s"/>
正如您所看到的,下一次调查是粗体,我希望其后面的字符串不是粗体。我试图使用如下的spannable ..
mNextTv = findViewById(R.id.cc_journal_survey_next_tv);
final SpannableString surveyName = new SpannableString(survey.getSurveyName());
surveyName.setSpan(new StyleSpan(Typeface.NORMAL),0, surveyName.length(), Spannable
.SPAN_EXCLUSIVE_EXCLUSIVE);
mNextTv.setText(String.format(getContext().getString(R.string.cc_journal_survey_next), surveyName));
然而我的最终结果是
下一次调查:调查
我认为Typeface.NORMAL
会使用我的spannable字符串并且不加粗体显示它。
我对此不了解什么?
答案 0 :(得分:3)
TextView的textStyle属性设置为粗体。它会覆盖您在'surveyName'变量中设置的内容。所以我的建议是删除它,并在你的Spannable设置范围内删除你想要加粗的文本部分。
尝试这样的事情:
final theWholeString = String.format(getContext().getString(R.string.cc_journal_survey_next), surveyName);
final SpannableString outputString = new SpannableString(theWholeString);
outputString.setSpan(new StyleSpan(Typeface.BOLD), 0, END_OF_BOLD_AREA, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mNextTv.setText(outputString);
从TextView中删除testStyle。