1

我正在使用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);
4

1 回答 1

2

我没有给你一个完美的答案。如果您看一下这个问题,到目前为止,还没有关于如何使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 文件使用渐变背景或图像背景,则必须更改上述代码。但是,如果没有更多信息,这是我对解决方法的建议。

于 2013-03-01T23:41:08.847 回答