我使用Webbroswer组件显示存储在设备上的一些HTML文件。我终于能够正确显示它了。但是我在android上还存在一个问题:Web浏览器显示但是它填满了空白。
但是,如果我点击它,它会显示正确的内容!
我尝试使用一些revalidate(),forceRevalidate(),requestFocus()调用并且这样想,但我无法解决问题。有什么想法吗?
答案 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();