Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface Blackberry-getPreferredWidth在4.5中被忽略?_User Interface_Blackberry_Layout - Fatal编程技术网

User interface Blackberry-getPreferredWidth在4.5中被忽略?

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个按钮。宽度

我已经创建了一个自动计算宽度的按钮字段。按钮的宽度将根据其父级的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个

每个按钮中的文本都不同,因此这可能是导致问题的原因。代码如下:

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插件中测试了您的代码

谢谢你试一试。你的结果很有趣,因为我在两个实际设备和模拟器上看到了它。我会继续挖掘,看看它是否与特定版本的操作系统有关。谢谢