2012-08-30 12 views
9

Ich möchte eine Schaltfläche erstellen. Diese Schaltfläche enthält einen Buchstaben mit einer Größe von 22 Pixeln und einigen Buchstaben rechts davon mit einer Größe von 16 Pixeln.Verschiedene Textgrößen in einer Schaltfläche

So:
enter image description here

Wie kann ich das erreichen?

Im Moment habe ich dies:

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

    btn.setText(span); 
} 
+0

Sperre an diesem http://stackoverflow.com/questions/1529068/is -it-möglich-zu-haben-mehrere-styles-inside-a-textview – Pasha

Antwort

20

Sie AbsoluteSizeSpan in Ihrem Spannable anwenden können unterschiedliche Größe von Text in gleichen Inhalt zu machen.

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

Ich versuche, diese Lösung für einen Knopf zu verwenden, aber es funktioniert nicht –

8

statt es durch den Code zu tun, können Sie einfach durch die Verwendung html Sachen in String-Ressource erreichen. Zum Beispiel:

Definieren Sie eine Zeichenfolge-Ressource:

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

und es auf Ihre Schaltfläche Text:

android:text="@string/tmp" 
+1

Ist die Einheit des Wertes in der Größe angegeben Pixel oder dp? –

+1

Ich glaube, Dimensionen im Zusammenhang mit HTML sind in Pixel – waqaslam

+0

Während das funktioniert ist es unglaublich langsam ... Wenn Sie den Text oft aktualisieren oder viele dieser Fälle in Ihrer Sicht Hierarchie haben, verwenden Sie es nicht SpannabelStringBuilders API möglicherweise nicht Sei hübsch, aber es ist schnell – martyglaubitz