1

我试图在我的黑莓应用程序中显示一个网站,但浏览器字段小于屏幕高度,我无法使其大小相同。

正在加载的页面实际上比屏幕小,但该网站是为移动设备设计的,非常适合 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:我使用的是黑莓操作系统版本 6

4

5 回答 5

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);
于 2012-10-19T06:44:29.737 回答
4

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

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

Height=device-height 解决了我的问题

于 2012-03-14T13:32:47.547 回答
1

试试这样:

protected void sublayout(int maxWidth, int maxHeight)
{
     super.sublayout(Display.getWidth(), Display.getHeight());
     setExtent(Display.getWidth(), Display.getHeight());
}
于 2011-12-17T06:22:11.317 回答
0

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

于 2011-12-16T20:43:07.483 回答
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);
于 2012-12-13T10:14:53.030 回答