2013-02-28 1 views
1

Я использую BrowserField для отображения некоторых локальных файлов HTML в моем приложении. Он отображает файлы 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); 

ответ

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 используется фон градиента или фон изображения, вышеуказанный код необходимо будет изменить. Но, без дополнительной информации, это мое предложение для решения .

+0

Но это не идеальное решение. Даже для моего случая это усложнит ситуацию. Поскольку в будущем файлы html могут поступать с сервера, и я показываю эти страницы для разных языков. Таким образом, это означает, что у меня есть разные html-файлы для разных языков. Таким образом, для меня все станет более жестким. Но спасибо за ваш ответ. –

+0

@ Ариндам, да, это правильно. Конечно, HTML-контент на сервере - это другая проблема. Если файл HTML извлекается с сервера, пользователь, вероятно, ожидает небольшую задержку в его рендеринге. Обычно я больше беспокоюсь о том, что BrowserFields загружается плавно, если я пытаюсь показать ** местный ** контент, где я не хочу, чтобы пользователь даже думал, что есть сетевая задержка. – Nate

Смежные вопросы