Web浏览器空白在android上

时间:2016-02-23 09:45:39

标签: android codenameone

我使用Webbroswer组件显示存储在设备上的一些HTML文件。我终于能够正确显示它了。但是我在android上还存在一个问题:Web浏览器显示但是它填满了空白。

但是,如果我点击它,它会显示正确的内容!

我尝试使用一些revalidate(),forceRevalidate(),requestFocus()调用并且这样想,但我无法解决问题。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

以下是我使用的代码:

WebBrowser wb = new WebBrowser();

if( wb.getInternal() instanceof BrowserComponent )
{
    BrowserComponent bc = (BrowserComponent) wb.getInternal();
    bc.setPinchToZoomEnabled( true );
}

wb.setPage( textToDisplay, "" );

findModuleDetailsContainer( currentContainer ).addComponent( BorderLayout.CENTER, wb );

Form currentForm = Display.getInstance().getCurrent();
currentForm.forceRevalidate();

然后我尝试在webbrowser及其容器上添加一些revalidate(),但没有任何效果:

wb.revalidate();
findModuleDetailsContainer( currentContainer ).revalidate();

答案 1 :(得分:0)

webbrowser的样式存在一些问题,所以将其bg颜色更改为其他颜色,如下面的代码所示

    webbrowser.getAllStyle().setBgColor(0x55ff0000);
    webbrowser.getUnselectedStyle().setBgColor(0x5500ff00);

当内容显示时,根据您的需要调整其bg颜色。

答案 2 :(得分:0)

WebBrowser / BrowserComponent需要位于表单中的边框布局的中心或类似于此处所述的布局中:Using two WebBrowsers on codename one (layout management)

原因很简单,HTML由本机浏览器呈现引擎异步加载。在加载时,浏览器没有“首选大小”,因此它的大小将为0.请注意,即使您的HTML是设备本地的,它也将在异步线程中运行!

更新:

尝试重现您的问题我做了这个在我的OPO设备上工作正常。

    Form hi = new Form("Tab Test", new BorderLayout());
    Tabs tb = new Tabs();
    hi.add(BorderLayout.CENTER, tb);
    BrowserComponent bc = new BrowserComponent();
    bc.setURL("https://www.codenameone.com/");
    tb.addTab("First", bc);
    tb.addTab("Second", new Label("Dummy"));
    hi.show();

Screenshot from OPO