Different textsizes in a button
Asked Answered
A

2

9

I want to create a button. This button contains a letter with a size of 22pixels and some letters to the right of it with a size of 16 pixels.

Like this:
enter image description here

How can I achieve this?

At the moment I have this:

private void setText(Button btn, String text, String underText) {
    Spannable span = new SpannableString(text + "\n" +  underText);

    btn.setText(span);
}
Antonantone answered 30/8, 2012 at 9:27 Comment(1)
Lock at this #1529568Shamrao
G
19

You can apply AbsoluteSizeSpan in your Spannable to make different size of Text in same content.

 private void setText(Button btn, String text, String underText) {

    Spannable span = new SpannableString(text + "\n" +  underText);
    span.setSpan(new AbsoluteSizeSpan(fontSize), startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    btn.setText(span);
}
Gamester answered 30/8, 2012 at 9:35 Comment(1)
I am trying to use this sollution for a BUTTON but it is not workingErythrocytometer
S
7

Instead of doing it through code, you may simply achieve it by using html stuff in string resource. For example:

Define a string resource:

<string name="tmp"><font size="30">2</font>abc</string>

and apply it to your button's text:

android:text="@string/tmp"
Saddleback answered 30/8, 2012 at 9:39 Comment(2)
i believe dimensions related to html are in pixelsSaddleback
While this works it is incredibly slow... if you're updating the text often or have lot of these cases in your view hierachy, don't use it SpannabelStringBuilders API might not be pretty, but it's fastBlenheim

© 2022 - 2024 — McMap. All rights reserved.