У меня есть строка, которая должна показывать мое значение из общего значения, например 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.
Ответ Рагхунандана должен быть тем, что вы ищете
Вызов String.valueOf(ss1)
существенно сокращает диапазон, который вы установили на SpannableString
. Измените метод setCurrentCount()
и базовое поле для обработки SpannableString
или чего-то более общего, например CharSequence
.
@MikeM. Я понимаю вашу точку зрения, но я не понимаю, как это реализовать, не могли бы вы привести мне пример? setCurrentCount () устанавливает значение String, и как мне обрабатывать SpannableString с помощью CharSequence?
Я предполагаю, что mData
- это List
некоторого типа данных, который вы написали. Если это так, то вам просто нужно изменить текущее поле счетчика в этом классе данных на CharSequence
, а не на String
, и аналогично для параметров методов получения и установки. Если в какой-то момент вам действительно понадобится плоский String
, вы должны его преобразовать; например, с toString()
или String.valueOf()
.
@MikeM. Идеально. Большое спасибо, если вы можете поставить это в качестве ответа, можете отметить его как принятый.
Обычный String
не содержит никакой информации о форматировании диапазона, поэтому вызов String.valueOf(ss1)
в основном отменяет форматирование, которое вы сделали с SpannableString
и RelativeSizeSpan
.
Чтобы сохранить это форматирование, измените тип соответствующего поля, а также типы параметров в любых соответствующих методах на CharSequence
, который является базовым interface
, реализуемым практически всеми типами текстовых данных. Затем вы передадите этот SpannableString
непосредственно в setCurrentCount()
вместо того, чтобы сначала преобразовать его в String
.
Если в какой-то момент вам действительно понадобится плоский String
, вы можете его преобразовать; например, с toString()
или String.valueOf()
.
Возможный дубликат Как увеличить размер шрифта какой-либо части строки в android?