User interface Blackberry-getPreferredWidth在4.5中被忽略?
我已经创建了一个自动计算宽度的按钮字段。按钮的宽度将根据其父级的HorizontalFieldManager(HFM)中的其他按钮数量确定。因此,如果有3个按钮,每个按钮的宽度约为33%。如果有5个按钮,每个按钮的宽度约为20%,等等。。。基本上,所有按钮的宽度都相同 下面的代码在JDE 4.7下运行良好(使用风暴模拟器进行测试)。但是在JDE4.5(8330模拟器)下运行时,我的getPreferredWidth()值似乎被忽略。两个设备上的显示宽度都是320,我在HFM上添加了4个按钮。宽度计算为80,4.7下每个按钮为80。在4.5下,我有3个按钮,大约96个,最后一个大约24个 每个按钮中的文本都不同,因此这可能是导致问题的原因。代码如下:User interface Blackberry-getPreferredWidth在4.5中被忽略?,user-interface,blackberry,layout,User Interface,Blackberry,Layout,我已经创建了一个自动计算宽度的按钮字段。按钮的宽度将根据其父级的HorizontalFieldManager(HFM)中的其他按钮数量确定。因此,如果有3个按钮,每个按钮的宽度约为33%。如果有5个按钮,每个按钮的宽度约为20%,等等。。。基本上,所有按钮的宽度都相同 下面的代码在JDE 4.7下运行良好(使用风暴模拟器进行测试)。但是在JDE4.5(8330模拟器)下运行时,我的getPreferredWidth()值似乎被忽略。两个设备上的显示宽度都是320,我在HFM上添加了4个按钮。宽度
public class AutoWidthButtonField extends ButtonField
{
AutoWidthButtonField(String label, long style) { super(label, style); }
public int getPreferredWidth()
{
Manager parent = this.getManager();
int fields = parent.getFieldCount();
int width = (Display.getWidth() / fields);
return width;
}
/*
protected void layout(int width, int height)
{
super.layout(width, height);
setExtent(getPreferredWidth(), getPreferredHeight());
}
*/
}
现在布局被注释掉了,但它不会改变行为。我是这样使用它的:
HorizontalFieldManager nav = new HorizontalFieldManager();
nav.add(new AutoWidthButtonField("B1", ButtonField.CONSUME_CLICK));
nav.add(new AutoWidthButtonField("Opt 2", ButtonField.CONSUME_CLICK));
nav.add(new AutoWidthButtonField("Test", ButtonField.CONSUME_CLICK));
nav.add(new AutoWidthButtonField("...", ButtonField.CONSUME_CLICK));
4.5下我做错了什么?谢谢 我在4.7、4.6、4.5和4.3上尝试了您的代码,您的getPreferredWidth()方法返回了预期的结果。我猜你的模拟器有问题。例如,通过HTTP连接此模拟器“BlackBerry Device Simulators v4.5.0.81”时出现问题,但此模拟器“BlackBerry Device Simulators v4.5.0.52(8310)”没有问题
注意:我在Eclipse和BB插件中测试了您的代码 谢谢你试一试。你的结果很有趣,因为我在两个实际设备和模拟器上看到了它。我会继续挖掘,看看它是否与特定版本的操作系统有关。谢谢