Страницы

Поиск по вопросам

воскресенье, 7 июля 2019 г.

Конкатенация span в Android

Пробую сделать, что бы в тексте, выводимом в TextView, было "Необходимо ХХХ руб." Но ХХХ должно быть красным цветом.
Пробую так:
public void onButtonClick (View v) { TextView Total = (TextView) findViewById(R.id.result);
float Sum = (Tank-FuelCurrent)*PriceFl; String sSum = String.format("%.0f", Sum);
SpannableStringBuilder ssb = new SpannableStringBuilder(sSum); ssb.setSpan(new ForegroundColorSpan(Color.RED), 0, sSum.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Total.setText("Необходимо "+ssb+" руб.");
}
Выводит полностью всю строку одним цветом по умолчанию. Если же меняю на
Total.setText(ssb);
то, соответственно, выводится только цена и выводится как надо, красным цветом. Тестирую на устройстве с Android 4.2.2. Как правильно произвести конкатенацию результата со строкой?


Ответ

Используйте append
private fun stylizationTextInfo(textView: TextView) { val result = SpannableStringBuilder() val ssb = SpannableStringBuilder("1000") val txtNeed = SpannableStringBuilder("Необходимо ") val txtMoney = SpannableStringBuilder(" руб.")
ssb.setSpan(ForegroundColorSpan(Color.RED), 0, ssb.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) result.append(txtNeed).append(ssb).append(txtMoney) textView.text = result }
java:
private void stylizationTextInfo(TextView textView) { SpannableStringBuilder result = new SpannableStringBuilder(); SpannableStringBuilder ssb = new SpannableStringBuilder("1000"); SpannableStringBuilder txtNeed = new SpannableStringBuilder("Необходимо "); SpannableStringBuilder txtMoney = new SpannableStringBuilder(" руб.");
ssb.setSpan(new ForegroundColorSpan(Color.RED), 0, ssb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); result.append(txtNeed).append(ssb).append(txtMoney); textView.setText(result); }

Комментариев нет:

Отправить комментарий