android 更改字符串的字体

r7knjye2  于 2023-02-14  发布在  Android
关注(0)|答案(5)|浏览(138)

我正在尝试改变显示在文本视图上的字符串的字体大小。请记住,有两个字符串显示在同一个文本视图上。我希望两个字符串的字体大小不同。

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);

请救救我!!!

relj7zay

relj7zay1#

您可以使用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);

希望这个有用。

j8ag8udp

j8ag8udp2#

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

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        myTextView.setText(Html.fromHtml("<p style='font-family: serif;'>Description here</p><br><p style='font-family: Times;'>Blah Blah Blah</p>", Html.FROM_HTML_MODE_LEGACY));
    } else {
        myTextView.setText(Html.fromHtml("<p style='font-family: serif;'>Description here</p><br><p style='font-family: Times;'>Blah Blah Blah</p>"));
    }
t1qtbnec

t1qtbnec3#

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

6ss1mwsb

6ss1mwsb4#

您可以先设置样式

<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);
vkc1a9a2

vkc1a9a25#

以动态方式实现相同目标

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);

相关问题