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