2016-06-12 20 views
1

Canvas.drawText()を使用してSpannableStringを描画するカスタムを作成しました。ViewSpannableStringを使用したAndroid Canvas drawText

私が作った絵文字がテキストに含まれている場合は、SpannableString.setSpan()と呼んでいます(私はデフォルトスタイルの絵文字が気に入らない)。 Canvas.drawText()は私が設定したスパンを描画せず、代わりにデフォルトスタイルの絵文字を描画します。 私はTextView.setText()と同じ電話番号SpannableStringを渡そうとしました。 パフォーマンスのためにテキストを描画するのにCanvasを使用します(それ以外の場合はTextViewを新しく追加すると、ListViewにスクロールするとパフォーマンスが問題になります)。 CanvasSpannableStringを描画するにはどうすればよいですか?

貧しい私の英語のため申し訳ありませんが、私はネイティブスピーカーではありません。前もってありがとう!

編集:実際に私はテキストの遷移のアニメーションを表示するために、このカスタムをViewにしました。いくつかのテキストが画面を水平に横断します。私が会った問題は、TextViewの描画方法が時間がかかり、アニメーションが悪く見えるということです。だから私はCanvasを使って直接テキストを描きたいと思う。悲しいことに、私はStaticLayoutに切り替えましたが、まだアニメーションが不安定であることがわかりました。

+0

は、それはまだいくつかの状況では遅いです@pskink。代わりに 'drawText'と' drawBitmap'を使用しました。それはうまくいきましたが、私の解決策が優雅かどうかは疑問です。 –

答えて

1

SpannableStaticLayoutに追加し、それをCanvasに描画することができます。

このような何か:

StaticLayout layout = new StaticLayout(yourSpannable, yourPaint, yourCanvas.getWidth(), 
     Alignment.ALIGN_NORMAL, 1, 0, false); 
layout.draw(yourCanvas);