Как изменить размер слова в строке Android?

У меня есть строка, которая должна показывать мое значение из общего значения, например 2/5, но я хочу показать его как 2 или число перед "/" имеет сравнительно больший размер, чем число после "/". Это то, что я пробовал до сих пор, и это не имеет никакого эффекта.

    SpannableString ss1=  new SpannableString(String.valueOf(connectedDevices + "/" + totalDevices));
    ss1.setSpan(new RelativeSizeSpan(2f), 0,1, 0); // set size
    mData.get(0).setCurrentCount(String.valueOf(ss1) );
    notifyDataSetChanged();

Я хочу, чтобы размер connectedDevices был в N (например, N = 3) раз больше размера totalDevices. Как я могу отформатировать эту строку?

Отличие от ссылки, в которой этот вопрос помечен как повторяющийся, заключается в том, что я сохраняю этот текст в строке или в любой переменной, а затем использую его позже через адаптер recyclerview.

Возможный дубликат Как увеличить размер шрифта какой-либо части строки в android?

Bö macht Blau 18.12.2018 21:00

Ответ Рагхунандана должен быть тем, что вы ищете

Bö macht Blau 18.12.2018 21:01

Вызов String.valueOf(ss1) существенно сокращает диапазон, который вы установили на SpannableString. Измените метод setCurrentCount() и базовое поле для обработки SpannableString или чего-то более общего, например CharSequence.

Mike M. 18.12.2018 21:02

@MikeM. Я понимаю вашу точку зрения, но я не понимаю, как это реализовать, не могли бы вы привести мне пример? setCurrentCount () устанавливает значение String, и как мне обрабатывать SpannableString с помощью CharSequence?

Muhammad Abdullah 18.12.2018 21:16

Я предполагаю, что mData - это List некоторого типа данных, который вы написали. Если это так, то вам просто нужно изменить текущее поле счетчика в этом классе данных на CharSequence, а не на String, и аналогично для параметров методов получения и установки. Если в какой-то момент вам действительно понадобится плоский String, вы должны его преобразовать; например, с toString() или String.valueOf().

Mike M. 18.12.2018 21:20

@MikeM. Идеально. Большое спасибо, если вы можете поставить это в качестве ответа, можете отметить его как принятый.

Muhammad Abdullah 18.12.2018 21:24
0
6
66
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обычный String не содержит никакой информации о форматировании диапазона, поэтому вызов String.valueOf(ss1) в основном отменяет форматирование, которое вы сделали с SpannableString и RelativeSizeSpan.

Чтобы сохранить это форматирование, измените тип соответствующего поля, а также типы параметров в любых соответствующих методах на CharSequence, который является базовым interface, реализуемым практически всеми типами текстовых данных. Затем вы передадите этот SpannableString непосредственно в setCurrentCount() вместо того, чтобы сначала преобразовать его в String.

Если в какой-то момент вам действительно понадобится плоский String, вы можете его преобразовать; например, с toString() или String.valueOf().

Другие вопросы по теме