Blackberry BrowserField不适合屏幕

时间:2011-12-16 19:38:30

标签: blackberry browserfield

我正在尝试在我的黑莓应用程序中显示一个网站,但浏览器字段小于屏幕高度,我不能使它的大小相同。

正在加载的页面实际上比屏幕小,但该网站专为移动设备而设计,非常适合iphone webview,blabkberry浏览器以及firefox和chrome。

我的代码如下:

    manager = new VerticalFieldManager(VerticalFieldManager.VERTICAL_SCROLL | VerticalFieldManager.HORIZONTAL_SCROLL)
    {
        protected void sublayout(int maxWidth, int maxHeight)
        {
            super.sublayout(maxWidth, maxHeight);
            setExtent(Display.getWidth(), Display.getHeight());
        }
    };
    manager.setBackground(BackgroundFactory.createSolidBackground(Color.RED));

    BrowserFieldConfig myBrowserFieldConfig = new BrowserFieldConfig();

    myBrowserFieldConfig.setProperty(BrowserFieldConfig.ALLOW_CS_XHR, Boolean.TRUE);
    myBrowserFieldConfig.setProperty(BrowserFieldConfig.JAVASCRIPT_ENABLED, Boolean.TRUE);
    myBrowserFieldConfig.setProperty(BrowserFieldConfig.INITIAL_SCALE, new Float(1));

    browserField = new BrowserField(myBrowserFieldConfig);
    browserField.requestContent(link);

    manager.add(browserField);

我得到的效果如下:当我加载此屏幕时,孔屏幕为红色(经理背景)。之后屏幕变为白色(我认为这是浏览器字段),然后当网页加载时,屏幕再次变为红色,白色部分缩小到行高,并随着网页元素开始显示而增长。问题是该页面应该适合所有屏幕,就像在iPhone和自定义浏览器中一样。

OBS:我正在使用黑莓OS版本6

5 个答案:

答案 0 :(得分:5)

这段代码用html:
<meta name="viewport" content="width=device-width,height=device-height,minimum-scale=1, maximum-scale=1" />
可以在客户端上替换为:

config = new BrowserFieldConfig();
  config.setProperty(BrowserFieldConfig.VIEWPORT_WIDTH, new Integer(
            Display.getWidth()));
    config.setProperty(BrowserFieldConfig.INITIAL_SCALE, new Float(1.0));

    config.setProperty(BrowserFieldConfig.USER_SCALABLE, Boolean.FALSE);

    browserField = new BrowserField(config);

答案 1 :(得分:4)

我不知道我的解决方案是否对您有所帮助,但是我遇到了与您相同的问题,花了几个小时后我终于通过在我的html页面的标题部分添加以下行来修复它:

<meta name="viewport" content="width=device-width,height=device-height,minimum-scale=1, maximum-scale=1" />

高度=设备高度修复了我的问题

答案 2 :(得分:1)

试试这样:

protected void sublayout(int maxWidth, int maxHeight)
{
     super.sublayout(Display.getWidth(), Display.getHeight());
     setExtent(Display.getWidth(), Display.getHeight());
}

答案 3 :(得分:0)

尝试在子布局中传递Display.getHeight()而不是f maxHeight

答案 4 :(得分:0)

试试这个

   class MyFieldManager extends VerticalFieldManager
    {

    int width;
    int height;

    MyFieldManager(int w,int h)

    {
        super(Manager.VERTICAL_SCROLL | Manager.HORIZONTAL_SCROLL );
        width=w;
        height=h;
    }

    public void    sublayout(int w,int h)
    {
        super.sublayout(w, h);
        setExtent(width,height);
    }
}

    BrowserFieldConfig config = new BrowserFieldConfig();  
    config.setProperty(BrowserFieldConfig.ALLOW_CS_XHR, Boolean.TRUE);  
    config.setProperty(BrowserFieldConfig.INITIAL_SCALE, new Float(0.5));
    MyFieldManager m=new MyFieldManager(Display.getWidth()/2,Display.getHeight()/2);
    add(m);
    BrowserField _browserField = new BrowserField(config);
    _browserField.addListener(new InnerBrowserListener());
    m.add(_browserField);