2015-04-24 17 views
10

工作,我知道SpannableString有可能在一個TextView中設置不同的文字大小,但如果添加的TextView編程它不工作。spannablestring不用於編程createed按鈕

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

的API版本? 5+? – pskink

+0

是的,它的5 @pskink – Venky

+1

他們在v5中改變了它,http://stackoverflow.com/questions/29007746/button-settext-with-spannable-dosent-work-for-android-5-0-lollipop – pskink

回答

25

正如你所看到的,這是對按鈕和TextView的爲API17但TextView的工作的工作只在API21

有趣!我注意到API 21上的按鈕全部大寫。因此刪除所有大寫字母。

默認情況下,「材質」按鈕的樣式爲全部大寫顯示文本。但是,AllCapsTransformationMethod中存在一個用於大寫的錯誤,導致它丟棄Spannable數據。

可以通過禁用ALLCAPS模式,這是默認的材質風格的小部件真正覆蓋默認的按鈕樣式。

從代碼,

txt.setAllCaps(false); 

從XML,

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

謝謝!即將轟動我的頭! –

+0

樂意幫忙:) –

+0

請更新您的答案,因爲沒有'android:allCaps'屬性。我發現'android:textAllCaps'是正確的。 –