Android:如何在 TextView 中制作不可破坏的块? [英] Android: How do i make nonbreakable block in TextView?
问题描述
我有很长的文本,其中包含看起来像某事-某事"的名称.这个长文本显示在 TextView 中.问题是某事-某事"换行了.
I have long text containing name that looks like "something-something". This long text is shown in TextView. The problem is "something-something" got line breaked.
我找到了 unicode 字符 U+2011 NON-BREAKING HYPHEN.但从 Android 3.0 开始,字体似乎支持这个 unicode 字符.但是,我支持 Android 2.1,其中显示了替换字符.
I have found unicode character U+2011 NON-BREAKING HYPHEN. But it looks like this unicode character is supported in font since Android 3.0. However I'm supporting Android 2.1 where replacement character is shown instead.
我查看了 Spannable 类,但没有找到如何定义不间断的文本块.也许我忽略了一些东西.
I have looked at class Spannable, but I did not find how to define nonbreaking block of text. Maybe I overlook something.
推荐答案
我通过实现 ReplacementSpan
在单个块中呈现文本来解决文本块的破坏.代码如下:
I solved breaking of the text block by implementing ReplacementSpan
to render text in single block. Here is the code:
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));
}
}
这篇关于Android:如何在 TextView 中制作不可破坏的块?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!