更改String的字体

时间:2014-06-23 11:34:42

标签: java android

我正在尝试更改textview上显示的字符串的字体大小。 记得有两个字符串显示在同一个textview上。我想要不同的字体大小 两个字符串。

String name = shopsArrayList.get(position);
String address = shopsAddress.get(position);

我尝试了这个,但它是在两个字符串上完成的,

tv.setText(name.toUpperCase() + "\r\n" + address);
tv.setPadding(25, 15, 0, 0);
tv.setTextSize(25);

请帮助!!!

5 个答案:

答案 0 :(得分:1)

您可以使用SpannableString轻松完成此操作。

见这个例子:

String str= "Hello World";
SpannableString spannable=  new SpannableString(str);
spannable.setSpan(new RelativeSizeSpan(1.5f), 0, 5, 0); //size
spannable.setSpan(new ForegroundColorSpan(Color.CYAN), 0, 5, 0);//Color
TextView txtview= (TextView) findViewById(R.id.textview);
txtview.setText(spannable); 

希望这有帮助。

答案 1 :(得分:0)

将第二个字符串放入Span中,以允许您更改文本的样式,例如TextAppearanceSpan。 http://developer.android.com/reference/android/text/style/TextAppearanceSpan.html

答案 2 :(得分:0)

您可以先为该

设置样式
<style name="firstStyle">
    <item name="android:textSize">@dimen/regular_text</item>
</style>
<style name="secondStyle">
    <item name="android:textSize">@dimen/bullet_text</item>
</style>

然后你必须从你的两个字符串中创建一个字符串,并指定你需要申请效果的字符串的长度。

SpannableString span = new SpannableString(myString);

span.setSpan(new TextAppearanceSpan(getContext(), R.style.firstStyle),0,15, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
span.setSpan(new TextAppearanceSpan(getContext(), R.style.secondStyle),16,30, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

tv.setText(span, TextView.BufferType.SPANNABLE);

答案 3 :(得分:0)

尝试使用Html格式,像这样:

myTextView.setText(Html.fromHtml("<p style='font-family: serif;'>Description here</p><br><p style='font-family: Times;'>Blah Blah Blah</p>"));

答案 4 :(得分:0)

实现相同的动态方式

    String name = shopsArrayList.get(position);
    String address = shopsAddress.get(position);

    int nameLength = name.length();
    int addressLength = address.length();
    Spannable span = new SpannableString(name+address);
    span.setSpan(new StyleSpan(Typeface.BOLD),0, nameLength,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    span.setSpan(new StyleSpan(Typeface.ITALIC),nameLength+1, addressLength,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

现在将文本设置为textview

textView.setText(span);