Android DrawableMarginSpan使用示例?
我正在使用可扩展文本,基本上是用可绘制文本替换像这样的标记。 这似乎工作得很好,只是我在工作中遇到了困难。 我实际上希望drawable具有超级脚本文本的外观,但我无法让它工作。我在想也许我可以使用DrawableMarginSpan类来设置我的DrawableMarginSpan的底部边距,但这似乎不起作用 文档没有给我任何信息,我已经运行了很多谷歌搜索,但都没有结果。Android DrawableMarginSpan使用示例?,android,textview,Android,Textview,我正在使用可扩展文本,基本上是用可绘制文本替换像这样的标记。 这似乎工作得很好,只是我在工作中遇到了困难。 我实际上希望drawable具有超级脚本文本的外观,但我无法让它工作。我在想也许我可以使用DrawableMarginSpan类来设置我的DrawableMarginSpan的底部边距,但这似乎不起作用 文档没有给我任何信息,我已经运行了很多谷歌搜索,但都没有结果。 任何关于如何完成此任务的信息或建议,我将不胜感激。:) 据我所知,DrawableMarginSpan用于在段落的前导添加
任何关于如何完成此任务的信息或建议,我将不胜感激。:) 据我所知,DrawableMarginSpan用于在段落的前导添加一个DrawableMarginSpan,同时设置段落相应的前导magrin,因此此跨度不能用于完成您想要的内容 您可以尝试使用替换span,它可以绘制您想要的内容
/**
* Make drawable as the superscript
*/
public class SuperscriptDrawableSpan extends ReplacementSpan {
private Drawable mDrawable;
private int mWidth;
private int mHeight;
public SuperscriptDrawableSpan(Drawable drawable, int width, int height) {
this.mDrawable = drawable;
this.mWidth = width;
this.mHeight = height;
}
@Override
public int getSize(Paint paint, CharSequence text, int start, int end, Paint.FontMetricsInt fm) {
return mWidth;
}
@Override
public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) {
mDrawable.setBounds((int) x, top, ((int) x) + mWidth, top + mHeight);
mDrawable.draw(canvas);
}
}
然后,您可以将其用作其他xxxSpan:
mSpannableBuilder = new SpannableStringBuilder();
mSpannableBuilder.append("SuperScriptDrawable^");
SuperscriptDrawableSpan spanSuperscriptDeawable = new SuperscriptDrawableSpan(getActivity().getResources().getDrawable(R.mipmap.ic_launcher), 24, 24);
mSpannableBuilder.setSpan(span, mSpannableBuilder.length() - 1,
mSpannableBuilder.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
仅用于演示,使用时需要优化