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