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);
}
有帮助吗?

解决方案

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

其他提示

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"
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top