我有一个 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"/>
如您所见,Next Survey 是粗体,我希望其后面的字符串不是粗体。我正在尝试按如下方式使用跨度..
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
会采用我的可扩展字符串并以不加粗的方式显示它。
我对此有什么不明白的地方?
最佳答案
您的 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。
关于java - 如何将 Spannable 设置为 TextView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49323019/