方法から チェックボックスを使用して ListField を作成しています - チェックボックスを使用して ListField を作成しますが
、その ListField の行にテキストをラップする方法がわかりません。
リストフィールドアイテムのテキストについては、スレッド
テキストラッピングを参照しました
ここでは次のように書かれています
表示しているのがテキストだけの場合は、rab によって提案されたアプローチを使用します。
デバイス画面に収まらない場合にラップしたいListFieldにのみテキストを表示しています。
しかし、私はどのように計算する「rabによって提案されたアプローチ」を得ていませんか?
String [] linesToDraw = 行幅に応じて行数を計算します
私はこれで立ち往生しているので、この問題の詳細はありますか?
私が得たあなたの論理で
* split text on words
* create string array and while words array not empty do
o create string lineStr
o while getFont().getAdvance(lineStr+" "+words[i]) < row width move words[i] to lineStr
みたいにやってます
if(getFont().getAdvance(lineStr+" "+words[i]) < Display.getWidth())
{
lineStr += words[i];
}
& 次の行のテキストを保存するために使用しているのと同じ lineStr として、Vector linesToDraw に lineStr を保存しています。
&最後に私がやっている描画のために
for (int i = 0; i < linesToDraw.size(); i++)
{
String textToDraw = (String)linesToDraw.elementAt(i);
graphics.drawText(textToDraw, 0, y, 0, w);
y += fontHeight;
}
しかし、いいえを計算する方法。行と行の高さの行数?
行の高さは行ごとに異なるため、この行の高さで setRowHeight(rowHeight) と書くことができます。
いいえを取得しました。行幅に応じて適切に行を並べ替え、ベクターに保存し、実行しています
int fontHeight = this.getFont().getHeight();
for (int i = 0; i < linesToDraw .size(); i++)
{
textToDraw = (String)linesToDraw.elementAt(i);
graphics.drawText(textToDraw, xpos, ypos, 0 , width);
ypos += fontHeight;
}
現在は線を描画していますが、デフォルトでは listField.setRowHeight() が 1 行しか取得していないため、前の線を超えています。r 2 行がある場合、setRowHeight(getFont().getHeight()*2) を drawListRow() に記述しますが、ループに入ります
ListField の作成中に setRowHeight() を記述すると、正しく表示されますが、すべての行で同じ行の高さが設定されます。
実行時に描画する文字列を取得します & 行の高さは行ごとに可変である必要があります。