Question

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);
}
Was it helpful?

Solution

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

OTHER TIPS

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"
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top