Blackberry BrowserField не подходит для экрана - PullRequest
1 голос
/ 16 декабря 2011

Я пытаюсь отобразить веб-сайт в своем приложении blackberry, но поле браузера меньше высоты экрана, и я не могу сделать его такого же размера.

Загружаемая страница на самом деле меньше экрана, но веб-сайт предназначен для мобильных устройств и идеально подходит для веб-браузера iphone, браузера 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: я использую Blackberry OS версии 6

Ответы [ 5 ]

5 голосов
/ 19 октября 2012

Этот код в 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);
4 голосов
/ 14 марта 2012

Я не знаю, поможет ли мое решение вам, но я столкнулся с той же проблемой, что и ваша, потратив на это несколько часов, я наконец исправил ее, добавив следующую строку в заголовочный раздел моей HTML-страницы:

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

Высота = устройство-высота исправила мою проблему

1 голос
/ 17 декабря 2011

Попробуй так:

protected void sublayout(int maxWidth, int maxHeight)
{
     super.sublayout(Display.getWidth(), Display.getHeight());
     setExtent(Display.getWidth(), Display.getHeight());
}
0 голосов
/ 13 декабря 2012

попробуйте

   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);
0 голосов
/ 17 декабря 2011

попробуйте в подслое, передавая Display.getHeight () вместо f maxHeight

...