plain - tamaño de letra en android studio
Diferentes tamaños de letra de cadenas en el mismo TextView (6)
En caso de que se pregunte cómo puede configurar múltiples tamaños diferentes en la misma vista de texto, pero usando un tamaño absoluto y no uno relativo, puede lograrlo usando AbsoluteSizeSpan
lugar de RelativeSizeSpan
.
Simplemente obtenga la dimensión en píxeles del tamaño de texto deseado
int textSize1 = getResources().getDimensionPixelSize(R.dimen.text_size_1);
int textSize2 = getResources().getDimensionPixelSize(R.dimen.text_size_2);
y luego crea un nuevo AbsoluteSpan
basado en el texto
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);
Tengo una vista de texto dentro con un número (variable) y una string
, ¿cómo puedo dar el número uno más grande que la cadena? el código:
TextView size = (TextView)convertView.findViewById(R.id.privarea_list_size);
if (ls.numProducts != null) {
size.setText(ls.numProducts + " " + mContext.getString(R.string.products));
}
Quiero que ls.numproducts tenga un tamaño diferente del resto del texto. ¿Cómo hacer?
He escrito mi propia función que toma 2 cadenas y 1 int (tamaño del texto)
El texto completo y la parte del texto que desea cambiar el tamaño de la misma.
Devuelve un SpannableStringBuilder que puede usar en la vista de texto.
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;
}
Prueba spannableStringbuilder . Usando esto podemos crear una cadena con múltiples tamaños de fuente.
Puede hacerlo usando una cadena html y configurando el html en Textview usando
txtView.setText(Html.fromHtml("Your html string here"));
Por ejemplo :
txtView.setText(Html.fromHtml("<html><body><font size=5 color=red>Hello </font> World </body><html>"));`
Use una cadena de Spannable
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);
Disparo rápido
Puede dividir cadena usando espacio y agregar span a la cadena que necesita.
String s= "Hello Everyone";
String[] each = s.split(" ");
Ahora aplique span a la cadena y agréguela a textview.
Método 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);
}
utilizando
Utils.increaseFontSizeForPath(spannable, "big", 3); // make "big" text bigger 3 time than normal text
Método 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);
}
utilizando
Utils.setFontSizeForPath(spannable, "big", (int) textView.getTextSize() + 20); // make "big" text bigger 20px than normal text