Je veux créer une WebView pour afficher une image.
Mais au deuxième / troisième démarrage de l'application, WebView
est vide sur les appareils réels.
Lorsque je commente //wv.getSettings().setJavaScriptEnabled(true);
, tout va bien et lorsque je suis en .http, je supprime onload="resize(this);"
une application démarre également avec l'image à chaque fois.
Comment corriger cela. Comment utiliser JavaScript
et ne pas avoir de WebView
vide?
Peut-être que je dois enregistrer le cache après la première initialisation?
public class TestwebViewimageActivity extends Activity {
private WebView wv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
wv = (WebView) findViewById(R.id.webview);
wv.getSettings().setJavaScriptEnabled(true);
wv.setWebViewClient(new HelloWebViewClient());
wv.setBackgroundColor(0x00000000);
wv.getSettings().setBuiltInZoomControls(false);
wv.setVerticalScrollBarEnabled(false);
wv.setHorizontalScrollBarEnabled(false);
wv.loadUrl("file:///android_asset/4.html");
}
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
mon .html image de mât en plein écran:
<html><head>
</head>
<body>
<img src="myimage.png" onload="resize(this);" />
<script type="text/javascript">
function resize(image) {
image.style['height'] = document.body.clientHeight + 'px';
image.style['width'] = document.body.clientWidth + 'px';
image.style['margin'] = 0;
document.body.style['margin'] = 0;
}
</script>
</body>
</html>
3 réponses
Je ne peux m'empêcher de penser que vous feriez mieux d'utiliser CSS que JavaScript pour redimensionner votre image.
J'ai fait un exemple en utilisant la grande taille d'arrière-plan: contain; propriété qui redimensionne automatiquement l'arrière-plan afin qu'il s'intègre dans le div, je pense que c'est ce que vous essayez d'obtenir avec votre JavaScript.
Pourquoi essayez-vous de redimensionner manuellement l'image? Réglez simplement la largeur de l'image et laissez la vue Web ajuster la hauteur en conséquence. Cela fonctionne parfaitement pour moi.
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
String summary = "<html><body><div style=\"background:red; \"</div>
<img src=\"res/drawable/banner300.jpg\"/></body></html>";
mWebView.loadData(summary, "text/html", "utf-8");
Questions connexes
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.