gpt4 book ai didi

java - ListField 选定行打破其他行的高度

转载 作者:行者123 更新时间:2023-12-02 07:16:30 26 4
gpt4 key购买 nike

我有一个 ListField 表现得很奇怪,我没有很多 BB 开发经验,但在互联网上进行了大量搜索后,我最终得到了以下结果。我用过this tutorial做很多 ListField 的事情。

这是我第一次打开屏幕并且没有执行任何其他操作时的屏幕截图:

Screen A

这是我向下滚动时的屏幕截图,这对所有字段都有相同的效果:

enter image description here

这是我根据上述教程根据我的需求调整的实现:

private Bitmap p1;
TableRowManager row;
Vector rows;

public ImageListField(List list) {
/* Init & Declaration */
setEmptyString("This ListField has No Data", DrawStyle.HCENTER);
setCallback(this);
setRowHeight(50);
Font.getDefault();
p1 = Bitmap.getBitmapResource("no-image.png");
rows = new Vector();
for (int x = 0; x < list.size(); ++x) {
Event e = (Event)list.getAt(x);

row = new TableRowManager();

BitmapField myImageField = new BitmapField(p1);
row.add(myImageField);
row.add(new LabelField(e.Name,
DrawStyle.ELLIPSIS | FOCUSABLE){

public void paint(Graphics g) {
g.setBackgroundColor(Color.BLACK);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.WHITE);
g.clear();
super.paint(g);
}

});

if(e.DateFrom.compareTo(e.DateTo) == 0)
{
row.add(new LabelField(e.DateFrom,
DrawStyle.ELLIPSIS | FOCUSABLE){

public void paint(Graphics g) {
g.setBackgroundColor(Color.BLACK);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.WHITE);
g.clear();
super.paint(g);
}

});
}
else
{
row.add(new LabelField(e.DateFrom + " - " + e.DateTo,
DrawStyle.ELLIPSIS | FOCUSABLE){

public void paint(Graphics g) {
g.setBackgroundColor(Color.BLACK);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.WHITE);
g.clear();
super.paint(g);
}

});
}

if(e.TimeFrom.compareTo(e.TimeTo) == 0)
{
row.add(new LabelField(e.TimeFrom,
DrawStyle.ELLIPSIS | FOCUSABLE){

public void paint(Graphics g) {
g.setBackgroundColor(Color.BLACK);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.WHITE);
g.clear();
super.paint(g);
}

});
}
else
{
row.add(new LabelField(e.TimeFrom + " - " + e.TimeTo,
DrawStyle.ELLIPSIS | FOCUSABLE){

public void paint(Graphics g) {
g.setBackgroundColor(Color.BLACK);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.WHITE);
g.clear();
super.paint(g);
}

});
}

row.add(new LabelField(e.Address,
DrawStyle.ELLIPSIS | FOCUSABLE){

public void paint(Graphics g) {
g.setBackgroundColor(Color.BLACK);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.WHITE);
g.clear();
super.paint(g);
}

});

row.add(new LabelField("R " + e.EntranceFee,
DrawStyle.ELLIPSIS | FOCUSABLE){

public void paint(Graphics g) {
g.setBackgroundColor(Color.BLACK);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.WHITE);
g.clear();
super.paint(g);
}

});

rows.addElement(row);
}
setSize(rows.size());
}

public void drawListRow(ListField listField, Graphics graphics, int index,
int y, int width) {
// TODO Auto-generated method stub
ImageListField list = (ImageListField) listField;
TableRowManager rowManager = (TableRowManager) list.rows
.elementAt(index);
rowManager.drawRow(graphics, 0, y, width, 119);
}

public Object get(ListField listField, int index) {
// TODO Auto-generated method stub
return rows.elementAt(index).toString();
}

public int getPreferredWidth(ListField listField) {
// TODO Auto-generated method stub
return Graphics.getScreenWidth();
}

public int getRowHeight() {
// TODO Auto-generated method stub
return 119;
}

public int getRowHeight(int arg0) {
// TODO Auto-generated method stub
return 119;
}

public int indexOfList(ListField listField, String prefix, int start) {
// TODO Auto-generated method stub
return -1;
}

protected boolean trackwheelClick(int status, int time) {
int index = getSelectedIndex();
Dialog.inform(Integer.toString(index));
return true;
}

private class TableRowManager extends Manager {
public TableRowManager() {
super(0);
}

// Causes the fields within this row manager to be layed out then
// painted.
public void drawRow(Graphics g, int x, int y, int width, int height) {
// Arrange the cell fields within this row manager.
layout(width, height);
// Place this row manager within its enclosing list.
setPosition(x, y);
// Apply a translating/clipping transformation to the graphics
// context so that this row paints in the right area.
g.pushRegion(getExtent());
// Paint this manager's controlled fields.
subpaint(g);
g.setColor(0xFF0000);
g.drawLine(0, height - 1, getPreferredWidth(), height - 1);
g.drawLine(40, 0, 40, getPreferredHeight());
// Restore the graphics context.
g.popContext();
}

// Arrages this manager's controlled fields from left to right within
// the enclosing table's columns.
protected void sublayout(int width, int height) {
// set the size and position of each field.
int fontHeight = Font.getDefault().getHeight();
int preferredWidth = getPreferredWidth();
// start with the Bitmap Field of the priority icon
Field field = getField(0);
layoutChild(field, 75, 75);
setPositionChild(field, 5, 5);
// set the task name label field
field = getField(1);
layoutChild(field, preferredWidth, fontHeight + 2);
setPositionChild(field, 85, 5);
// set the list name label field
field = getField(2);
layoutChild(field, preferredWidth, fontHeight + 2);
setPositionChild(field, 85, fontHeight + 6 + 5);
// set the due time name label field
field = getField(3);
layoutChild(field, preferredWidth, fontHeight + 2);
setPositionChild(field, 100, fontHeight + fontHeight + 8 + 5);

field = getField(4);
layoutChild(field, preferredWidth, fontHeight + 2);
setPositionChild(field, 100, fontHeight + fontHeight + fontHeight + 10 + 5);

field = getField(5);
layoutChild(field, preferredWidth, fontHeight + 2);
setPositionChild(field, 100, fontHeight + fontHeight + fontHeight + fontHeight + 12 + 5);

setExtent(preferredWidth, getPreferredHeight());
}

// The preferred width of a row is defined by the list renderer.
public int getPreferredWidth() {
return Graphics.getScreenWidth();
}

// The preferred height of a row is the "row height" as defined in the
// enclosing list.
public int getPreferredHeight() {
return 119;// getRowHeight();
}


}

任何有关更改行高和位置的建议将不胜感激。

顺便说一句,这是在模拟器中。

最佳答案

尝试设置 setRowHeight(119); 而不是 setRowHeight(50);。不确定它是否有帮助,因为它不是发布代码中 ListField 的常见应用程序/用法。

关于java - ListField 选定行打破其他行的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14880174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com