日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android实现富文本时遇到的一些问题(2)字体效果的保存

發布時間:2025/4/14 Android 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android实现富文本时遇到的一些问题(2)字体效果的保存 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一個富文本應該能保存各種各樣的效果,之前已經說過了用HTML.toHtml,新的問題又來了,fromHtml的時候字體大小效果會消失,

這不知道算不算是個BUG吧。。因為官方的代碼里就是沒有處理

private static void startFont(SpannableStringBuilder text,Attributes attributes) {String color = attributes.getValue("", "color");String face = attributes.getValue("", "face");text.setSpan(new Font(color, face), len, len, Spannable.SPAN_MARK_MARK);}

HTML里面只處理了color 和 face,?而且從1.5->4.0的代碼里都是這樣。。。。

高手呢,很容易,自己寫個解析器,把詳解析的解析了,但是我是懶人。。只能用現有的了,

我的做法是從網站上把?HTML類下載下來,然后放到自己的項目里用,中間會涉及到一些內部類,也需要手動下載手動引用,

而且會報一些警告,無視就好

下面是我修改完的代碼

private static void startFont(SpannableStringBuilder text,Attributes attributes) {String color = attributes.getValue("", "color");String face = attributes.getValue("", "face");//change by rockmanString size = attributes.getValue("", "size");int len = text.length();text.setSpan(new Font(color, face, size), len, len, Spannable.SPAN_MARK_MARK);} private static void endFont(SpannableStringBuilder text) {int len = text.length();Object obj = getLast(text, Font.class);int where = text.getSpanStart(obj);text.removeSpan(obj);if (where != len) {Font f = (Font) obj;if (!TextUtils.isEmpty(f.mColor)) {if (f.mColor.startsWith("@")) {Resources res = Resources.getSystem();String name = f.mColor.substring(1);int colorRes = res.getIdentifier(name, "color", "android");if (colorRes != 0) {ColorStateList colors = res.getColorStateList(colorRes);text.setSpan(new TextAppearanceSpan(null, 0, 0, colors, null),where, len,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);}} else {int c = getHtmlColor(f.mColor);if (c != -1) {text.setSpan(new ForegroundColorSpan(c | 0xFF000000),where, len,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);}}}if (f.mFace != null) {text.setSpan(new TypefaceSpan(f.mFace), where, len,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);}//add by rockmanif (!TextUtils.isEmpty(f.mSize)) {int s = Integer.parseInt(f.mSize)*6;text.setSpan(new AbsoluteSizeSpan(s),where, len,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);}}}

還要處理FONT的閉合

官方代碼的處理是用startXXX? endXXX做處理, 所以我們也可以處理自定義標簽,

開源的系統就是好。。不然錯了都不知道怎么辦。。。 PS:其實我也是在STACKOVERFLOW里找出來的 = =!

轉載于:https://www.cnblogs.com/rockman12352/archive/2013/01/05/2846658.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Android实现富文本时遇到的一些问题(2)字体效果的保存的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。