如何将 Spannable 设置为 TextView?
How to set Spannable to TextView?
我有一个 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 是粗体,我希望它后面的字符串不是粗体。我正在尝试按如下方式使用 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
会使用我的可跨越字符串并在不加粗的情况下显示它。
我有什么不明白的?
您的 TextView 将 textStyle 属性 设置为粗体。它会覆盖您在 'surveyName' 变量中设置的内容。所以我的建议是删除它,并在你的 Spannable set span 中为你想要加粗的文本部分。
尝试这样的事情:
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。
我有一个 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 是粗体,我希望它后面的字符串不是粗体。我正在尝试按如下方式使用 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
会使用我的可跨越字符串并在不加粗的情况下显示它。
我有什么不明白的?
您的 TextView 将 textStyle 属性 设置为粗体。它会覆盖您在 'surveyName' 变量中设置的内容。所以我的建议是删除它,并在你的 Spannable set span 中为你想要加粗的文本部分。
尝试这样的事情:
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。