Android 富文本编辑器 - ListItemSpan
16lz
2021-01-23
import android.graphics.Canvas;import android.graphics.Paint;import android.text.Layout;import android.text.Spanned;import android.text.style.LeadingMarginSpan;import android.util.Log;public class ListItemSpan implements LeadingMarginSpan { private final int mNumber; private static final int BULLET_RADIUS = 3; private static final int NUMBER_RADIUS = 10; //Gap should be about 1em public static final int STANDARD_GAP_WIDTH = 30; public ListItemSpan() { mNumber = -1; } public ListItemSpan(int number) { mNumber = number; } public int getNumber() { return this.mNumber; } public int getLeadingMargin(boolean first) { if (!first) { return 0; } if (mNumber != -1) { return 2 * NUMBER_RADIUS + STANDARD_GAP_WIDTH; } else { return 2 * BULLET_RADIUS + STANDARD_GAP_WIDTH; } } public void drawLeadingMargin(Canvas c, Paint p, int x, int dir, int top, int baseline, int bottom, CharSequence text, int start, int end, boolean first, Layout l) { if (((Spanned) text).getSpanStart(this) == start) { Paint.Style style = p.getStyle(); p.setStyle(Paint.Style.FILL); if (mNumber != -1) { c.drawText(mNumber + ".", x + dir, baseline, p); } else { c.drawText("\u2022", x + dir, baseline, p); } p.setStyle(style); } }}
-- 源代码引用自 HtmlCleaner Android
======
最近在做Android上的富文本编辑器。
有朋友问到
Android 里面有内置的BulletSpan
那带有数字的 number list
应该怎么做呢?
其实如果不会自己写Span
耐心Google 一定能得到相关代码
我借花献佛
把Html Cleaner的代码贴在这里
供大家参考
更多相关文章
- 系出名门 Android源代码
- Android应用程序安装过程源代码分析(3)
- Android开发——控件基础(七)ListView组件:示例代码
- Ubuntu 13.04 编译环境配置及android 2.3 源代码编译时出现了以
- Android应用程序安装过程源代码分析(4)
- Android平台mass storage相关代码
- 使用代码为textview设置drawableLeft
- [置顶] Android 2.3.5源代码 更新至android 6.0,可以下载,度娘网盘
- cocos2dx 调用java层代码