Twitter Bootstrap не работает в Android WebView

HTML файл (test.html) -

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <link href="bootstrap.css" rel="stylesheet" type="text/css"/>
    <link href="bootstrap-responsive.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<h1>Hello World!!!</h1>
 <a class="btn btn-primary btn-large">
    Learn more
</a>
</body>
</html>

Файлы HTML и bootstrap css помещаются в папку с ресурсами. Если я открываю HTML файл в IE/Firefox, он отображается правильно. Но Android WebView не делает это правильно

Код для WebView -

WebView webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
String url = "file:///android_asset/test.html";
webView.loadUrl(url);

IE делает это следующим образом

IE Renders it like this

WebView делает это как

WebView Renders it like this

Что не так?

Ответ 1

Добавьте эту строку

webView.getSettings().setDomStorageEnabled(true);

Ответ 2

Протестировано на эмуляторе - версия Android 4.2 с Bootstrap v2.3.2

Файлы в папке с вашими приложениями:

 bootstrap-responsive.css
 bootstrap.css
 test.html

Не нужно добавлять "android.permission.INTERNET" в манифест Android, поскольку файлы css доступны локально в папке с ресурсами приложения.

Вот скриншот того, как он отображается. Нет причин, по которым вы не могли увидеть его, если есть проблемы с файлами CSS (что опять маловероятно, так как вы можете видеть результаты в браузере).

enter image description here

Ответ 3

  WebView webView = (WebView) findViewById(R.id.webview);
  webView.getSettings().setJavaScriptEnabled(true);    
  String htmlData ="<link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css\">"+yourdata;    
  webview.loadData(htmlData, "text/html",  "UTF-8");

Ответ 4

В котлине:

webview.settings.javaScriptEnabled = true