2016-05-25 7 views
0

I電流は、私はonDrawをオーバーライドして、弧を描くカスタムビューを持っています。私はこの円弧内にテキストを描きたい。これを行うには、私はdrawTextOnPathを使用し、この円弧の上部にカーブしたテキストを表示します。しかし、時にはテキストがかなり長いので、複数の行に行こうと思っています。アンドロイド:drawTextOnPath複数行

私は現在、複数の行に上に描画するために、このようなコードを使用

: -

textView.getPaint().getTextBounds(s, 0, 
        s.length(), r); 
      int yOffset=r.height() + textSpacing; 
      int textStart=0; 
      int numberOfLines= (int) (r.width()/arcWidth) + 1; 
      for (int i=0; i < numberOfLines; i ++) { 
       canvas.drawTextOnPath(s.substring(textStart, textStart + s.length()/numberOfLines), 
         childHolder.path, 0, yOffset, paint); 
       yOffset+=r.height() +textSpacing; 
       textStart=s.length()/numberOfLines; 
      } 

しかし、これは明らかにテキストがさらにアークの下でどのように広い考慮されていません。 staticlayout/dynamiclayout(テキストが大きく変化する)のようなものを使ってこれを行う方法はありますか?

誰もが利用できる幅

+0

はい、多かれ少なかれ、いくつかの固定幅で 'StaticLayout'を使い、' getLineCount'/'getLineStart' /' getLineEnd'を使用してください。 – pskink

+0

こんにちは、すばらしい返信をありがとう。あなたがそれぞれの新しい行に行くように、私は、アークでそれを描いていますがあるのでそれは長方形のためにあるので、そこに利用できる幅が小さいので、私はstaticlayoutがうまくいくとは思いませんか? – user2486946

+0

ので、あなたの弧の長さを計算し、としてそれを渡す 'StaticLayout CTOR – pskink

答えて

0

にコードのこのビットを計算するために私が使用することができますアンドロイドSDKで何か、または数学のいずれかに私を指すことができれば、私の問題を解決: -

PathMeasure pm = new PathMeasure(path, false); 
    layout = new DynamicLayout(spannableText, spannableText, paint, (int) arcPathMeasure.getLength(), Layout.Alignment.ALIGN_CENTER, 1, 0, true); 

おかげでpskink!

関連する問題