Ich habe eine textView
mit einer Nummer (Variable) und einer string
. Wie kann ich die Nummer um eine Größe größer als die string
? .__ angeben. Der Code:
TextView size = (TextView)convertView.findViewById(R.id.privarea_list_size);
if (ls.numProducts != null) {
size.setText(ls.numProducts + " " + mContext.getString(R.string.products));
}
Ich möchte, dass ls.numproducts eine vom Rest des Textes abweichende Größe hat. Wie macht man?
Verwenden Sie einen 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);
Schnappschuss
Sie können die Zeichenfolge mit Leerzeichen teilen und der gewünschten Zeichenfolge einen Abstand hinzufügen.
String s= "Hello Everyone";
String[] each = s.split(" ");
Wenden Sie nun span
auf die string
an und fügen Sie dasselbe zu textview
hinzu.
Nur für den Fall, dass Sie sich fragen, wie Sie mehrere verschiedene Größen in derselben Textansicht einstellen können. Wenn Sie jedoch eine absolute und keine relative Größe verwenden, können Sie dies mit AbsoluteSizeSpan
anstelle einer RelativeSizeSpan
erreichen.
Ermitteln Sie einfach die Größe in Pixeln der gewünschten Textgröße
int textSize1 = getResources().getDimensionPixelSize(R.dimen.text_size_1);
int textSize2 = getResources().getDimensionPixelSize(R.dimen.text_size_2);
und erstellen Sie dann eine neue AbsoluteSpan
basierend auf dem Text
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);
Sie können dies tun, indem Sie eine HTML-Zeichenfolge verwenden und die HTML mit auf Textansicht setzentxtView.setText(Html.fromHtml("Your html string here"));
Beispielsweise :
txtView.setText(Html.fromHtml("<html><body><font size=5 color=red>Hello </font> World </body><html>"));`
Methode 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);
}
mit
Utils.increaseFontSizeForPath(spannable, "big", 3); // make "big" text bigger 3 time than normal text
Methode 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);
}
mit
Utils.setFontSizeForPath(spannable, "big", (int) textView.getTextSize() + 20); // make "big" text bigger 20px than normal text
private SpannableStringBuilder SpannableStringBuilder(final String text, final char afterChar, final float reduceBy) {
RelativeSizeSpan smallSizeText = new RelativeSizeSpan(reduceBy);
SpannableStringBuilder ssBuilder = new SpannableStringBuilder(text);
ssBuilder.setSpan(
smallSizeText,
text.indexOf(afterChar),
text.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
);
return ssBuilder;
}
------------------------
TextView textView =view.findViewById(R.id.textview);
String s= "123456.24";
textView.setText(SpannableStringBuilder(s, '.', 0.7f));
---------------- Ergebnis ---------------
12345.24
Der beste Weg, dies zu tun, ist Html ohne Teilstring Ihres Textes und voller Dynamik Zum Beispiel:
public static String getTextSize(String text,int size) {
return "<span style=\"size:"+size+"\" >"+text+"</span>";
}
und Sie können color attribut etc ....__ verwenden, wenn die andere Hand:
size.setText(Html.fromHtml(getTextSize(ls.numProducts,100) + " " + mContext.getString(R.string.products));
Ich habe meine eigene Funktion geschrieben, die 2 Strings und 1 Int benötigt (Textgröße)
Der Volltext und der Teil des Textes, dessen Größe Sie ändern möchten.
Es gibt einen SpannableStringBuilder zurück, den Sie in der Textansicht verwenden können.
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;
}
Versuchen Sie spannableStringbuilder . Damit können wir einen String mit mehreren Schriftgrößen erstellen.