Я использую SpannableStringBuilder для установки текста в текстовом представлении, но он дает разные результаты на разных устройствах.
Вот код построителя spannableString
SpannableStringBuilder builder = new SpannableStringBuilder();
SpannableString first = new SpannableString("Directions to Send or Clear Alert:\n\n" +
"Option 1 of 2: To Send Alert, click the \"");
first.setSpan(new ForegroundColorSpan(Color.BLACK), 0, first.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
first.setSpan( new StyleSpan(Typeface.BOLD), 0, first.length()-27, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
SpannableString second = new SpannableString("Match / STOP!");
second.setSpan(new ForegroundColorSpan(Color.RED), 0, second.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
SpannableString third = new SpannableString("\" button next to the matching person.\n" +
"Option 2 of 2: To Clear Alert, you can choose either of these 2 options:\n");
third.setSpan(new ForegroundColorSpan(Color.BLACK), 0, third.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
third.setSpan( new StyleSpan(Typeface.BOLD), 38, 53, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
SpannableString third1 = new SpannableString("A) Click any of the \"");
third1.setSpan(new ForegroundColorSpan(Color.BLACK), 0, third1.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
third1.setSpan( new StyleSpan(Typeface.BOLD), 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
SpannableString four = new SpannableString("No Match / CONTINUE");
four.setSpan(new ForegroundColorSpan(Color.parseColor("#008000")), 0, four.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
SpannableString five = new SpannableString("\" buttons.\n" +
"B) Click on the \"X\" (clear) button at the top right of this message screen.");
five.setSpan(new ForegroundColorSpan(Color.BLACK), 0, five.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
five.setSpan( new StyleSpan(Typeface.BOLD), 11, 12, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.append(first);
builder.append(second);
builder.append(third);
builder.append(third1);
builder.append(four);
builder.append(five);
headingTv.setText(builder);
На некоторых устройствахтекст выглядит так, что это правильно,
, но в некоторых устройствах, таких как google pixel2, это выглядит ужасно.
Может ли кто-нибудь помочь мне с этим, почему это происходит?