String
from aの単語TextView
が大きすぎて前の単語と同じ行に収まらない場合、次の行にスキップします。これは非常に便利です。しかし、これは私をジレンマに陥れます。MyString
は、特定の理由から、単語の各文字の間にスペースを入れ、単語の間に 2 つのスペースを入れる必要があります。このため、 はTextView
1 行に 1 つのピースを持ち、次の行にもう 1 つのピースを持つ単語を分割します。そのため、次の行にスキップする方法View
を拡張してオーバーライドするカスタムを作成する必要があるかもしれないと考えています。TextView
しかし、テキストビューのクラスドキュメントを見ると、これを行う方法が見つかりません。ですから、どんな助け、アドバイス、提案も大歓迎です!ありがとう!
質問する
1449 次
1 に答える
1
TextView
いくつかの変更でオーバーライドできます。
基本的な戦略は、onDraw()
メソッドをオーバーライドしてテキストをカスタム ペイントすることです。また、オーバーライドする必要がありますonMeasure()
。
その中で、文字列内onDraw()
のカスタム単語を前処理し、必要に応じて改行文字 ( \n
) を挿入します。
テキスト内の単語をループし、measureText(String)を現在の幅と比較TextView
して、改行を挿入する場所を決定します。「パディング」を考慮することを忘れないでください。
例:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
super.onMeasure(getSuggestedMinimumWidth(), getSuggestedMinimumHeight());
}
@Override
protected void onDraw(Canvas canvas) {
// preprocess your text
canvas.drawText(...);
}
于 2013-04-12T22:50:45.307 に答える