Android Webview - la page Web doit correspondre à l'écran de l'appareil
j'ai essayé ce qui suit pour adapter la page Web en fonction de la taille de l'écran de l'appareil.
mWebview.setInitialScale(30);
et ensuite définir le viewport de métadonnées
<meta name="viewport" content="width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=0;"/>
<meta name="viewport" content="width=device-width, target-densityDpi=medium-dpi"/>
mais rien ne fonctionne, page Web n'est pas fixé à la taille de l'écran de l'appareil.
quelqu'un Peut-il me dire comment l'obtenir?
19 réponses
vous devez calculer l'échelle que vous devez utiliser manuellement, plutôt que de mettre à 30.
private int getScale(){
Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int width = display.getWidth();
Double val = new Double(width)/new Double(PIC_WIDTH);
val = val * 100d;
return val.intValue();
}
puis utiliser
WebView web = new WebView(this);
web.setPadding(0, 0, 0, 0);
web.setInitialScale(getScale());
vous pouvez utiliser ce
WebView browser = (WebView) findViewById(R.id.webview);
browser.getSettings().setLoadWithOverviewMode(true);
browser.getSettings().setUseWideViewPort(true);
cela résout taille en fonction de la taille de l'écran.
amis,
j'ai trouvé beaucoup d'informations importantes de votre part. Mais, la seule façon de travailler pour moi était cette façon:
webView = (WebView) findViewById(R.id.noticiasWebView);
webView.setInitialScale(1);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setScrollbarFadingEnabled(false);
webView.loadUrl("http://www.resource.com.br/");
je travaille sur Android 2.1 en raison du type d'appareils de la société. Mais j'ai résolu mon problème en utilisant la partie des informations de chacun.
Merci!
Essayez avec cette HTML5 conseils
http://www.html5rocks.com/en/mobile/mobifying.html
et avec cela si votre version Android est 2.1 ou plus""
WebView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
ces réglages ont fonctionné pour moi:
wv.setInitialScale(1);
wv.getSettings().setLoadWithOverviewMode(true);
wv.getSettings().setUseWideViewPort(true);
wv.getSettings().setJavaScriptEnabled(true);
setInitialScale(1) manquait dans mes tentatives.
bien que la documentation indique que 0 va zoomer jusqu'au bout si setUseWideViewPort est défini à vrai mais 0 n'a pas fonctionné pour moi et j'ai dû mettre 1 .
ceux-ci travaillent pour moi et adaptent le WebView à la largeur de l'écran:
// get from xml, with all size set "fill_parent"
webView = (WebView) findViewById(R.id.webview_in_layout);
// fit the width of screen
webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
// remove a weird white line on the right size
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
Grâce conseille et ligne Blanche dans eclipse Web view
Tout ce que vous devez faire est de simplement
webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
j'ai le même problème quand j'utilise ce code
webview.setWebViewClient(new WebViewClient() {
}
il se peut que vous devriez supprimer il dans votre code
Et n'oubliez pas d'ajouter 3 modes ci-dessous pour votre webview
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setLoadWithOverviewMode(true);
webview.getSettings().setUseWideViewPort(true);
cela fixe la taille basée sur la taille de l'écran
WebView browser = (WebView) findViewById(R.id.webview);
browser.getSettings().setLoadWithOverviewMode(true);
browser.getSettings().setUseWideViewPort(true);
browser.getSettings().setMinimumFontSize(40);
cela fonctionne très bien pour moi puisque la taille du texte a été réglée à really small by .setLoadWithOverViewMode and .setUseWideViewPort.
vous devez utiliser HTML dans votre webView dans ce cas. J'ai résolu cela en utilisant le code suivant
webView.loadDataWithBaseURL(null,
"<!DOCTYPE html><html><body style = \"text-align:center\"><img src= "
+ \"http://www.koenvangorp.be/photos/2005_09_16-moon_2000.jpg\"
+ " alt=\"pageNo\" width=\"100%\"></body></html>",
"text/html", "UTF-8", null);
cela ressemble à un problème XML. Ouvrez le document XML contenant votre vue Web. Supprimer le code de remplissage en haut.
puis dans la disposition , ajouter
android:layout_width="fill_parent"
android:layout_height="fill_parent"
dans la vue sur le Web, ajouter
android:layout_width="fill_parent"
android:layout_height="fill_parent"
cela rend la vue Web compatible avec l'écran de l'appareil.
apporter des Modifications à la réponse par danh32 depuis l'écran.getWidth (); est maintenant déprécié.
private int getScale(){
Point p = new Point();
Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
display.getSize(p);
int width = p.x;
Double val = new Double(width)/new Double(PIC_WIDTH);
val = val * 100d;
return val.intValue();
}
puis utiliser
WebView web = new WebView(this);
web.setPadding(0, 0, 0, 0);
web.setInitialScale(getScale());
la méthode getWidth de L'objet Display est dépréciée. Outrepasser onSizeChanged pour obtenir la taille de la vue Web quand elle devient disponible.
WebView webView = new WebView(context) {
@Override
protected void onSizeChanged(int w, int h, int ow, int oh) {
// if width is zero, this method will be called again
if (w != 0) {
Double scale = Double.valueOf(w) / Double.valueOf(WEB_PAGE_WIDTH);
scale *= 100d;
setInitialScale(scale.intValue());
}
super.onSizeChanged(w, h, ow, oh);
}
};
webview.setInitialScale(1);
webview.getSettings().setLoadWithOverviewMode(true);
webview.getSettings().setUseWideViewPort(true);
webview.getSettings().setJavaScriptEnabled(true);
fonctionnera, mais n'oubliez pas d'enlever quelque chose comme:
<meta name="viewport" content="user-scalable=no"/>
s'il existe dans le fichier html ou modifier user-scalable=yes, sinon il ne sera pas.
j'ai eu la vidéo en chaîne html, et la largeur de la vue web était plus grande que la largeur de l'écran et cela fonctionne pour moi.
ajoute ces lignes à la chaîne HTML.
<head>
<meta name="viewport" content="width=device-width">
</head>
résultat après avoir ajouté le code ci-dessus à la chaîne HTML:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width">
</head>
</html>
cela aidera à ajuster l'émulateur selon la page Web:
WebView wb;
//CALL THIS METHOD
wb.setInitialScale(50);
vous pouvez régler l'échelle initiale en pourcentage comme indiqué ci-dessus.
en théorie la combinaison de:
settings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS);
avec
settings.setUseWideViewPort(false)
règle le problème, enroule le contenu et s'adapte à l'écran. Mais le NARROW_COLUMNS a été déprécié. Je vous conseille de lire ce fil ci-dessous qui explore la question en détail: https://code.google.com/p/android/issues/detail?id=62378
WebView webView = (WebView)findViewById(R.id.web_view);
webView.setInitialScale((int) getResources().getDimension(R.dimen._50sdp)); // getActivity(). if you are at Fragment
webView.getSettings().setLoadsImagesAutomatically(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
webView.loadDataWithBaseURL(null,here comes html content,"text/html","UTF-8", null);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setSupportZoom(true);
webView.getSettings().setDisplayZoomControls(true);
webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);