是否可以从底部而不是从顶部开始向黑莓屏幕添加gui组件?
由于
答案 0 :(得分:3)
快速回复是不会让我解释为什么并建议一些工作;
屏幕实际上并不处理将字段布置到自己身上,为此,他们将代理经理视为任何类型的经理,纵向,横向等问题。问题是所有经理从左上角开始绘画自己。对于一个从底部开始绘制字段的经理,它必须知道底部所在的exaclty并添加组件而不是down,这与管理器类中的所有低级代码相反。您可以在BlackBerry API documentation中了解有关经理的更多信息。
通过调整添加字段和使用字段样式的方式,您仍然可以获得与此类似的效果。例如,请考虑以下代码:
add(new LabelField("field 1"));
add(new LabelField("field 2"));
这会给我们带来结果;
field 1 field 2
因为字段1被绘制,然后是字段2。但是,如果我们总是在我们的经理的开头插入字段,例如位置0如此:
insert(new LabelField("field 1", FIELD_BOTTOM), 0);
insert(new LabelField("field 2", FIELD_BOTTOM), 0);
我们会得到结果;
field 2 field 1
您希望从问题中描述的屏幕中获得哪些结果。
我不确定你是如何让这些字段画到屏幕底部的,你可以尝试研究“位置相对底部”的风格,但我老实说不确定。
答案 1 :(得分:1)
您可能正在使用VerticalFieldManager
,其文档上写着:
垂直现场经理列出 单个字段从上到下 列。
所以,如果你
manager.add(field1);
manager.add(field2);
manager.add(field3);
屏幕上字段的顺序就是这样。 但你可以这样做:
Vector v = new Vector();
v.add(field1);
v.add(field2);
v.add(field3);
for(int i=v.size()-1;i>=0;i--) {
manager.add((Field)v.elementAt(i));
}
答案 2 :(得分:1)
排序。您可以使用Manager#insert(Field,int)方法并始终在零索引处插入。如果使用VerticalFieldManager执行此操作,它将模拟自下而上向Manager添加字段。
答案 3 :(得分:1)
到目前为止,一些答案是使用Manager.insert(Field,int),并继续插入位置0.这将起作用,但插入的运行时间是已添加到的元素数量的线性经理。这意味着此解决方案将具有整体二次运行时间。如果你在10个以下的字段中添加,则没什么大不了的,但是如果你计划增加更多,那么插入开销就会很大。
如果您可以从上到下进行插入操作,通过按照Muger的解决方案建议重新排序字段,可以大大提高运行时间。
最后,您可以编写自己的BottomUpVerticalFieldManager,以您希望的方式进行布局。当您编写自己的经理时,您可以以任何方式布置这些字段。在这种情况下,它将是自下而上的。编写自己的经理可能看起来令人生畏,但在将来尝试解决布局问题时,它会为您提供相当大的自由。