【问题标题】:Blackberry BrowserField does not fit to screen黑莓浏览器字段不适合屏幕
【发布时间】:2011-12-16 19:38:29
【问题描述】:

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

正在加载的页面实际上比屏幕小,但该网站是为移动设备设计的,非常适合 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

【问题讨论】:

    标签: blackberry browserfield


    【解决方案1】:

    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);
    

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 非常感谢您!正是我需要的。我有视口宽度,甚至没有考虑高度。再次感谢!!!!
      【解决方案3】:

      试试这样:

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

      【讨论】:

      • 感谢您的帮助,但我已经尝试过,这不是解决方案。我在这里遇到的是浏览器字段的问题,经理工作得很好,因为孔屏被涂成红色(红色是经理背景)
      【解决方案4】:

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

      【讨论】:

      • 您好,感谢您的帮助,但我已经尝试过了,但这不是解决方案。我描述问题的方式是我试图告诉你问题不在于经理,因为孔屏是红色的(经理背景)。
      【解决方案5】:

      试试这个

         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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多