2015-04-24 9 views
10

Ich weiß SpannableString möglich ist, verschiedene Textgröße in einem Textview zu setzen, aber wenn Textview hinzugefügt arbeitet programmatisch seine nicht.spannablestring arbeitet nicht für programmatisch createed Taste

String s = "Best Ever"; 
SpannableString ss1 = new SpannableString(s); 
ss1.setSpan(new RelativeSizeSpan(2f), 0, 4, 0); // set size 
ss1.setSpan(new ForegroundColorSpan(Color.RED), 0, 4, 0); // set color 
TextView tv = (TextView) findViewById(R.id.textview); 
tv.setText(ss1); 
+0

welche api-Version? 5+? ja – pskink

+0

seinen 5 @pskink – Venky

+1

änderten sie es in v5, http://stackoverflow.com/questions/29007746/button-settext-with-spannable-dosent-work-for-android-5-0-lollipop – pskink

Antwort

25

Wie Sie sehen können, ist es Arbeit auf Knopf und Textview für API17 aber die Arbeit an Textview nur auf API21

Interessant! Ich bemerke, dass die Schaltfläche auf API 21 alle Caps ist. So entfernen Sie alle Caps.

Standardmäßig werden Materialschaltflächen so formatiert, dass Text in Großbuchstaben angezeigt wird. Es gibt jedoch einen Fehler in der AllCapsTransformationMethod, die für die Groß-/Kleinschreibung verwendet wird und dazu führt, dass es spannbare Daten verwirft.

Sie können den standardmäßigen Schaltflächenstyling außer Kraft setzen, indem Sie den Modus allCaps deaktivieren, der standardmäßig für Widgets mit Material-Design gilt.

Von Code,

txt.setAllCaps(false); 

Von XML,

<View 
    ... 
    android:textAllCaps="false" /> 
+2

Danke! war im Begriff, meinen Kopf zu schlagen! –

+0

Gerne helfen :) –

+0

Bitte aktualisieren Sie Ihre Antwort, weil keine 'android: allCaps' Attribut. Ich habe festgestellt, dass 'android: textAllCaps' die richtige ist. –

Verwandte Themen