2011-08-18 11 views
6

名前が "something-something"のような長いテキストがあります。この長いテキストはTextViewに表示されます。問題は「何か」が壊れていることです。Android:TextViewでブロック不可能なブロックを作るにはどうすればいいですか?

ユニコード文字U + 2011 NON-BREAKING HYPHENが見つかりました。しかし、このユニコード文字はAndroid 3.0以降のフォントでサポートされているようです。しかし、代わりの文字が代わりに表示されるAndroid 2.1をサポートしています。

私はクラスSpannableを見てきましたが、改行しないテキストブロックを定義する方法は見つかりませんでした。たぶん私は何かを見落とします。

答えて

2

ReplacementSpanを実装してテキストを1ブロックにレンダリングすることで、テキストブロックの分割を解決しました。コードは次のとおりです。

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)); 
    } 
} 
関連する問題