在浏览器字段中加载本地HTML文件时是否显示白屏?

时间:2013-02-28 09:31:28

标签: blackberry browserfield

我正在使用BrowserField在我的应用程序中显示一些本地HTML文件。它正确显示HTML文件。但是在屏幕启动时它会显示一些白色屏幕(背景)。我该如何摆脱这个问题?

我使用以下代码:

BrowserFieldConfig _bfConfig = new BrowserFieldConfig();
_bfConfig.setProperty(BrowserFieldConfig.NAVIGATION_MODE,BrowserFieldConfig.NAVIGATION_MODE_POINTER);
_bfConfig.setProperty(BrowserFieldConfig.JAVASCRIPT_ENABLED, Boolean.TRUE );
_bfConfig.setProperty(BrowserFieldConfig.USER_AGENT, "MyApplication 1.0");

BrowserField myBrowserField = new BrowserField(_bfConfig);
add(myBrowserField);

BrowserFieldRequest request = new BrowserFieldRequest("local:///OTPhelp_en.html");
myBrowserField.requestContent(request);

1 个答案:

答案 0 :(得分:2)

我没有完美的答案。如果你看一下at this question,到目前为止,还没有给出关于如何使BrowserField背景透明的答案,这将是一种方式来解决你的问题。

根据您的OTPhelp_en.html页面的编写方式,您拥有的控制权以及更改频率,这可能是一种可接受的解决方法:

如果您的html文件具有纯色背景,并且您知道该颜色是什么(因为它是您的 html内容),那么您只需设置BrowserField背景颜色即可。然后,在呈现html内容之前,您不会看到任何白色闪光。像这样:

public class MyBrowserScreen extends MainScreen {

    // this assumes the html file uses a red (#ff0000) background
    private int BG_COLOR = Color.RED;

    public MyBrowserScreen() {

        // set the screen manager's background
        getMainManager().setBackground(BackgroundFactory.createSolidBackground(BG_COLOR));

        BrowserFieldConfig _bfConfig = new BrowserFieldConfig();
        _bfConfig.setProperty(BrowserFieldConfig.NAVIGATION_MODE,BrowserFieldConfig.NAVIGATION_MODE_POINTER);
        _bfConfig.setProperty(BrowserFieldConfig.JAVASCRIPT_ENABLED, Boolean.TRUE );
        _bfConfig.setProperty(BrowserFieldConfig.USER_AGENT, "MyApplication 1.0");

        BrowserField myBrowserField = new BrowserField(_bfConfig);

        // set the browser field background to match the HTML background, and
        //  the containing screen's background
        _myBrowserField.setBackground(getMainManager().getBackground());
        add(myBrowserField);

        BrowserFieldRequest request = new BrowserFieldRequest("local:///OTPhelp_en.html");
        myBrowserField.requestContent(request);

当然,以这种方式对其进行硬编码意味着如果HTML文件更改其背景颜色,您也需要在Java代码中更改它。

如果您想避免这种情况,并且您知道HTML文件将始终使用纯色背景,则可以先将html文件作为资源流打开

getClass().getResourceAsStream("/OTPhelp_en.html");

然后解析它,搜索背景颜色(例如<body bgcolor=<body style="background-color:)。如果在HTML文件中进行简单的背景颜色更改,这至少会使浏览器字段看起来正确。

如果HTML文件使用渐变背景或图像背景,则必须更改上述代码。但是,没有更多信息,这是我对解决方法的建议。