User interface Blackberry-如何使用复选框在ListField中进行文本包装?
我正在创建一个列表字段,其中包含来自User interface Blackberry-如何使用复选框在ListField中进行文本包装?,user-interface,blackberry,custom-controls,word-wrap,listfield,User Interface,Blackberry,Custom Controls,Word Wrap,Listfield,我正在创建一个列表字段,其中包含来自 但我不知道如何在列表字段中将文本换行。 我引用了线程 这里写的是 如果所有显示的都是文本,那么我将使用rab建议的方法 我只在列表字段中显示文本,如果列表字段不适合设备屏幕,我想将其包装。 但我没有得到“rab建议的方法”,在其中如何计算 String[]linesToDraw=根据行宽计算行数 我被这件事搞砸了,关于这个问题有什么细节吗 用你的逻辑我明白了 * split text on words * create string array and
但我不知道如何在列表字段中将文本换行。
我引用了线程 这里写的是 如果所有显示的都是文本,那么我将使用rab建议的方法 我只在列表字段中显示文本,如果列表字段不适合设备屏幕,我想将其包装。
但我没有得到“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
*在单词上拆分文本
*创建字符串数组,而单词数组不为空
o创建字符串lineStr
o而getFont().getAdvance(lineStr+“”+words[i])<行宽将words[i]移动到lineStr
我是这样做的
if(getFont().getAdvance(lineStr+" "+words[i]) < Display.getWidth())
{
lineStr += words[i];
}
if(getFont().getAdvance(lineStr+“”+words[i])
&我将线条str存储在向量linesToDraw中,与我用于存储下一行文本的线条str相同
&最后我在画画
for (int i = 0; i < linesToDraw.size(); i++)
{
String textToDraw = (String)linesToDraw.elementAt(i);
graphics.drawText(textToDraw, 0, y, 0, w);
y += fontHeight;
}
for(int i=0;i
但是如何计算行数和行高
因此,使用此行高,我可以编写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;
}
int-fontHeight=this.getFont().getHeight();
对于(int i=0;i
现在,它将绘制线,但默认情况下是在上一行的上方绘制listField。setRowHeight()只绘制一行。如果有r 2行,那么我在drawListRow()中写入setRowHeight(getFont().getHeight()*2),但随后它进入循环
如果我在创建ListField时写入setRowHeight(),则它会正常运行,但对于所有行,都会设置相同的行高
我在运行时获取要绘制的字符串&对于不同的行,行高应该是可变的,那么我如何使用什么参数设置行高(),使用哪种方法?我认为“根据行宽计算行数”意味着:
- 分词
- 创建字符串数组,而单词数组不为空
- 创建字符串lineStr
- 而getFont().getAdvance(lineStr+“”+words[i])<行宽将words[i]移动到lineStr
- 字符串[]行与行之间的行
- 行高=行长*(getFont().getHeight()+topMargin+bottomMargin)