Android:如何在TextView中制作牢不可破的块?

时间:2011-08-18 10:45:07

标签: android textview

我的长文字包含看起来像“某事物”的名字。这个长文本显示在TextView中。问题是“某事 - 事情”被打破了。

我找到了unicode角色U + 2011 NON-BREAKING HYPHEN。但是从Android 3.0开始,它看起来像字体支持这个unicode字符。但是我支持Android 2.1,而是显示替换字符。

我看过类Spannable,但我没有找到如何定义不间断的文本块。也许我忽视了一些事情。

1 个答案:

答案 0 :(得分:2)

我通过实现ReplacementSpan在单个块中呈现文本来解决了文本块的破坏问题。这是代码:

public class NonbreakingSpan extends ReplacementSpan {

    @Override
    public void draw(
            Canvas canvas,
            CharSequence text, int start, int end,
            float x, int top, int y, int bottom,
            Paint paint) {
        canvas.drawText(text, start, end, x, y, paint);
    }

    @Override
    public int getSize(
            Paint paint,
            CharSequence text, int start, int end,
            FontMetricsInt fm) {
        return Math.round(paint.measureText(text, start, end));
    }
}