Различные размеры шрифтов строк в том же TextView

У меня есть textView внутри с числом (переменной) и string , как я могу присвоить размер номера один больше, чем строка? код:

 TextView size = (TextView)convertView.findViewById(R.id.privarea_list_size); if (ls.numProducts != null) { size.setText(ls.numProducts + " " + mContext.getString(R.string.products)); } 

Я хочу, чтобы ls.numproducts имеет размер, отличный от остальной части текста. Как сделать?

Использовать Spannable String

  String s= "Hello Everyone"; SpannableString ss1= new SpannableString(s); ss1.setSpan(new RelativeSizeSpan(2f), 0,5, 0); // set size ss1.setSpan(new ForegroundColorSpan(Color.RED), 0, 5, 0);// set color TextView tv= (TextView) findViewById(R.id.textview); tv.setText(ss1); 

Snap shot

введите описание изображения здесь

Вы можете разделить строку, используя пробел, и добавить диапазон к требуемой строке.

  String s= "Hello Everyone"; String[] each = s.split(" "); 

Теперь примените span к строке и добавьте ее в textview.

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

Просто получите размер в пикселях требуемого размера текста

 int textSize1 = getResources().getDimensionPixelSize(R.dimen.text_size_1); int textSize2 = getResources().getDimensionPixelSize(R.dimen.text_size_2); 

а затем создать новый AbsoluteSpan на основе текста

 String text1 = "Hi"; String text2 = "there"; SpannableString span1 = new SpannableString(text1); span1.setSpan(new AbsoluteSizeSpan(textSize1), 0, text1.length(), SPAN_INCLUSIVE_INCLUSIVE); SpannableString span2 = new SpannableString(text2); span2.setSpan(new AbsoluteSizeSpan(textSize2), 0, text2.length(), SPAN_INCLUSIVE_INCLUSIVE); // let's put both spans together with a separator and all CharSequence finalText = TextUtils.concat(span1, " ", span2); 

Вы можете это сделать, используя html-строку и установив html в Textview, используя
txtView.setText(Html.fromHtml("Your html string here"));

Например :

 txtView.setText(Html.fromHtml("Hello  World "));` 

Способ 1

 public static void increaseFontSizeForPath(Spannable spannable, String path, float increaseTime) { int startIndexOfPath = spannable.toString().indexOf(path); spannable.setSpan(new RelativeSizeSpan(increaseTime), startIndexOfPath, startIndexOfPath + path.length(), 0); } 

с помощью

 Utils.increaseFontSizeForPath(spannable, "big", 3); // make "big" text bigger 3 time than normal text 

введите описание изображения здесь

Способ 2

 public static void setFontSizeForPath(Spannable spannable, String path, int fontSizeInPixel) { int startIndexOfPath = spannable.toString().indexOf(path); spannable.setSpan(new AbsoluteSizeSpan(fontSizeInPixel), startIndexOfPath, startIndexOfPath + path.length(), 0); } 

с помощью

 Utils.setFontSizeForPath(spannable, "big", (int) textView.getTextSize() + 20); // make "big" text bigger 20px than normal text 

введите описание изображения здесь

Попробуйте spannableStringbuilder . Используя это, мы можем создать строку с несколькими размерами шрифтов.

Я написал свою собственную функцию, которая принимает 2 строки и 1 int (размер текста)

Полный текст и часть текста, который вы хотите изменить его размер.

Он возвращает SpannableStringBuilder, который вы можете использовать в текстовом представлении.

  public static SpannableStringBuilder setSectionOfTextSize(String text, String textToChangeSize, int size){ SpannableStringBuilder builder=new SpannableStringBuilder(); if(textToChangeSize.length() > 0 && !textToChangeSize.trim().equals("")){ //for counting start/end indexes String testText = text.toLowerCase(Locale.US); String testTextToBold = textToChangeSize.toLowerCase(Locale.US); int startingIndex = testText.indexOf(testTextToBold); int endingIndex = startingIndex + testTextToBold.length(); //for counting start/end indexes if(startingIndex < 0 || endingIndex <0){ return builder.append(text); } else if(startingIndex >= 0 && endingIndex >=0){ builder.append(text); builder.setSpan(new AbsoluteSizeSpan(size, true), startingIndex, endingIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } }else{ return builder.append(text); } return builder; } 
 private SpannableStringBuilder SpannableStringBuilder(String text) { RelativeSizeSpan smallSizeText = new RelativeSizeSpan(.7f); SpannableStringBuilder ssBuilder = new SpannableStringBuilder(text); ssBuilder.setSpan( smallSizeText, text.indexOf("."), text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE ); return ssBuilder; } ------------------------ TextView textView =view.findViewById(R.id.textview); String s= "123456.24"; textView.setText(SpannableStringBuilder(s)); 

—————- Результат —————

Результат:

12345. 24

  • Разделить большую строку
  • Исходный список имен людей
  • Просмотр Android EditText Плавающая подсказка в дизайне материалов
  • Как разбить стилизованный текст на страницы в Android?
  • Добавить текст в поле ввода
  • bigrams вместо отдельных слов в termdocument-матрице с использованием R и Rweka
  • Ограничить длину текста до n строк с помощью CSS
  • Как нарисовать текст На изображении?
  • Что такое «энтропия и получение информации»?
  • SVG: текст внутри прямоугольника
  • Как заменить текст на CSS?
  • Давайте будем гением компьютера.