[轉]Android中的一個TextView中的字體設置不同大小


本文轉自:http://txlong-onz.iteye.com/blog/1142781

 


如圖,這個是桌面Widget中的截圖,最好是通過一個TextView實現,這是我提出的問題,近幾天解決。呵呵,當然寫兩個TextView很簡單也很容易設置。

Java代碼 復制代碼  收藏代碼
  1. title.setText("Your big island <b>ADVENTURE!</b>");//這是原樣顯示,我想讓加粗  

還有,我想能不能類似的給上邊那樣通過html標簽設置樣式。網上搜過,果然可以。

Java代碼 復制代碼  收藏代碼
  1. {   
  2.    final SpannableStringBuilder sb = new SpannableStringBuilder("your text here");   
  3.    final ForegroundColorSpan fcs = new ForegroundColorSpan(Color.rgb(158158158)); // Span to set text color to some RGB value   
  4.    final StyleSpan bss = new StyleSpan(android.graphics.Typeface.BOLD); // Span to make text bold   
  5.    sb.setSpan(fcs, 04, Spannable.SPAN_INCLUSIVE_INCLUSIVE); // Set the text color for first 4 characters   
  6.    sb.setSpan(bss, 04, Spannable.SPAN_INCLUSIVE_INCLUSIVE); // make them also bold   
  7.    yourTextView.setText(sb);   
  8. }  

另外android幫我們封裝了簡單的方法。

Java代碼 復制代碼  收藏代碼
  1. title.setText(Html.fromHtml("Your big island <b>ADVENTURE!</b>"));   

但是,我通過這個方法,在widget中設置,不太可行。又是個疑問了,但到在widget中通過html代碼設置字體大小不行么?

如果你經常的使用設置TextView中的字體,最好使用Spannable或SpannableBuilder之類的。網上說Html.fromHtml不是很高效,因為這是通過一個很大的xml來解析的。

 

我再試試Spannable

Java代碼 復制代碼  收藏代碼
  1. TextView TV = (TextView)findViewById(R.id.mytextview01);    
  2. Spannable WordtoSpan = new SpannableString("I know just how to whisper, And I know just how to cry,I know just where to find the answers");           
  3. WordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 1530, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);   
  4. TV.setText(WordtoSpan);  

經過測試通過這種方法還是不能夠改變widget中的字體大小。

Java代碼 復制代碼  收藏代碼
  1. Spannable WordtoSpan = new SpannableString("大字小字");   
  2. WordtoSpan.setSpan(new AbsoluteSizeSpan(11), 01, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);   
  3. WordtoSpan.setSpan(new AbsoluteSizeSpan(21), 23, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);   
  4. remoteViews.setCharSequence(R.id.text11, "setText", WordtoSpan.toString());   
  5. ComponentName com = new ComponentName("com.jftt.widget""com.jftt.widget.MyWidgetProvider");   
  6. appWidgetManager.updateAppWidget(com, remoteViews);  

經過我的修改終於成功了,原來試試自己使用錯誤啊。下邊是正確代碼。

 

Java代碼 復制代碼  收藏代碼
  1. Spannable WordtoSpan = new SpannableString("大字小字");   
  2. WordtoSpan.setSpan(new AbsoluteSizeSpan(20), 02, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);   
  3. WordtoSpan.setSpan(new AbsoluteSizeSpan(14), 24, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);   
  4. remoteViews.setCharSequence(R.id.text11, "setText", WordtoSpan);   
  5. ComponentName com = new ComponentName("com.jftt.widget""com.jftt.widget.MyWidgetProvider");   
  6. appWidgetManager.updateAppWidget(com, remoteViews);  

相信對比可以看出我錯在哪里了吧!是的,我錯誤的使用了toString方法。

效果如圖:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM