WebView не загружает правильный CSS на Android 16 - PullRequest
0 голосов
/ 10 октября 2018

Я использую общее веб-представление для загрузки html-файлов, чтобы показать диалоговые окна справки в моем приложении для Android.

this.helpView = new WebView(this);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
            this.helpView.getSettings().setSafeBrowsingEnabled(false);
        this.helpView.getSettings().setJavaScriptEnabled(true);

Использование довольно простое, когда я хочу показать любому диалоговому окну справки загрузку любого изhtml-файлы, включенные в папку активов, в helpView

 if (this.helpView.getParent() != null)
            ((ViewGroup) this.helpView.getParent()).removeView(this.helpView);

        this.helpView.loadUrl(url);

, где url выглядит примерно так: file:///android_asset/add_giveaway_help.htm? + Locale.getDefault().getLanguage()

Вот хитрость: я толькоодин html-файл для каждой ситуации справки, но каждый файл содержит текст справки на нескольких языках, каждый html-файл имеет функцию javascript, которая читает собственный URL-адрес и проверяет индикатор параметра запроса языка.
в соответствии с этой информацией некоторый конкретный класс cssвводится в HTML, и отображается только нужный язык

функция JavaScript:

if(window.location.href.endsWith('pt'))
style.innerHTML = '.en { display: none; }';
else
style.innerHTML = '.pt { display: none; }';

однако это не работает на Android 16

оба справочных текстапоказывается ... в то время как другие JavaScript в том же HTML работают даже на Android 16

1 Ответ

0 голосов
/ 10 октября 2018
htmlData = "<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" />" + htmlData;

// предположим, что у нас есть файл /assets/style.css

webView.loadDataWithBaseURL("file:///android_asset/", htmlData, "text/html", "UTF-8", null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...