두 줄로 텍스트를 나누고 행 높이 2 x 글꼴 높이 (여백)를 설정하는 것이 더 좋을까요?
alt text http://img219.imageshack.us/img219/5802/listh.jpg
class Scr extends MainScreen implements ListFieldCallback {
int DISPLAY_WIDTH = Display.getWidth();
Vector mItems = new Vector();
ListField mListField = new ListField();
public Scr() {
mListField.setCallback(this);
add(mListField);
mItems.addElement("Lorem ipsum dolor sit amet, ");
mItems.addElement("Lorem ipsum dolor sit");
mItems.addElement("Lorem ipsum dolor sit amet, "+
"consectetuer adipiscing elit");
mItems.addElement("Lorem ipsum dolor sit amet, "+
"consectetuer adipiscing elit, sed diam "+
"nonummy nibh euismod");
mItems.addElement("Lorem ipsum dolor sit amet, "+
"consectetuer adipiscing elit");
mItems.addElement("Lorem ipsum dolor sit amet, ");
mListField.setSize(mItems.size());
mListField.setRowHeight(
mListField.getFont().getHeight()*2 + 4);
}
public void drawListRow(ListField field, Graphics g,
int i, int y, int w) {
// Draw the text.
String text = (String) get(field, i);
if(g.getFont().getAdvance(text) > w)
{
int index = 0;
while(g.getFont().getAdvance(text.substring(0, index)) < w)
{
index++;
}
g.drawText(text.substring(0, index), 0, y, 0, w);
g.drawText(text.substring(index, text.length()-1), 0,
y + g.getFont().getHeight()+ 4, DrawStyle.ELLIPSIS, w);
}
else
{
g.drawText(text, 0, y, 0, w);
}
}
public Object get(ListField listField, int index) {
return mItems.elementAt(index);
}
public int getPreferredWidth(ListField listField) {
return DISPLAY_WIDTH;
}
public int indexOfList(ListField listField,
String prefix, int start) {
return 0;
}
}
귀하는 다른 방법으로 가능하지 않는 것, 이것에 대해 잘 될 수 있습니다. 아마도 화면에 어수선하게 굴러 서 멈추는 데 도움이 될 것입니다. – sethxian
글쎄, 사용자 정의 컨트롤 (세로 관리자 + 레이블)을 빌드하면 ... ListField의 행 높이가 모든 행에 대해 동일합니다 (( –