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); 

puis définissez la fenêtre de métadonnées

    

Mais rien ne fonctionne, la page Web n’est pas fixée à la taille d’écran de l’appareil.

Quelqu’un peut-il me dire comment l’obtenir?

Vous devez calculer l’échelle que vous devez utiliser manuellement, plutôt que de définir à 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 utilisez

 WebView web = new WebView(this); web.setPadding(0, 0, 0, 0); web.setInitialScale(getScale()); 

Vous pouvez l’utiliser

  WebView browser = (WebView) findViewById(R.id.webview); browser.getSettings().setLoadWithOverviewMode(true); browser.getSettings().setUseWideViewPort(true); 

cette taille fixe en fonction de la taille de l’écran.

Copains,

J’ai trouvé beaucoup d’importation et d’excellentes informations de votre part. Mais la seule façon de travailler pour moi était la suivante:

 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(https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"http://www.resource.com.br/https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"); 

Je travaille sur Android 2.1 en raison du type d’appareils de l’entreprise. Mais j’ai corrigé mon problème en utilisant la partie des informations de chacun.

Merci!

Essayez avec ces conseils HTML5

http://www.html5rocks.com/fr/mobile/mobifying.html

Et avec cela si votre version Android est 2.1 ou supérieure

  WebView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); 

Ces parameters ont fonctionné pour moi:

 wv.setInitialScale(1); wv.getSettings().setLoadWithOverviewMode(true); wv.getSettings().setUseWideViewPort(true); wv.getSettings().setJavaScriptEnabled(true); 

setInitialScale (1) était manquant dans mes tentatives.

Bien que la documentation indique que 0 zoomera complètement si setUseWideViewPort est défini sur true, mais que 0 ne fonctionnait pas pour moi et que je devais définir 1 .

Celles-ci fonctionnent pour moi et ajustent WebView à la largeur de l’écran:

 // get from xml, with all size set https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"fill_parenthttps://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/" 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); 

Merci ci-dessus conseille et ligne blanche dans la vue Web éclipse

Tout ce que vous devez faire est 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() { } 

alors peut-être que vous devriez le supprimer dans votre code
Et n’oubliez pas d’append 3 modes ci-dessous pour votre webview

  webview.getSettings().setJavaScriptEnabled(true); webview.getSettings().setLoadWithOverviewMode(true); webview.getSettings().setUseWideViewPort(true); 

cette taille fixe en fonction de 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 car la taille du texte a été réglée à très petit par .setLoadWithOverViewMode et .setUseWideViewPort.

Cela ressemble à un problème XML. Ouvrez le document XML contenant votre Web-View. Supprimez le code de remplissage en haut.

Puis dans la mise en page, ajoutez

 android:layout_width=https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"fill_parenthttps://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/" android:layout_height=https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"fill_parenthttps://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/" 

Dans la vue Web, ajoutez

 android:layout_width=https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"fill_parenthttps://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/" android:layout_height=https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"fill_parenthttps://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/" 

Cela permet à la vue Web de s’adapter à l’écran de l’appareil.

Dans ce cas, vous devez utiliser HTML dans votre webView. J’ai résolu ce problème en utilisant le code suivant

 webView.loadDataWithBaseURL(null, https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"\https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"pageNo\https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/", https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"text/htmlhttps://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/", https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"UTF-8https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/", null); 

Faire des modifications à la réponse par danh32 depuis le display.getWidth (); est maintenant obsolète.

 private int getScale(){ Point p = new Point(); Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); display.getSize(p); int width = px; Double val = new Double(width)/new Double(PIC_WIDTH); val = val * 100d; return val.intValue(); } 

Puis utilisez

 WebView web = new WebView(this); web.setPadding(0, 0, 0, 0); web.setInitialScale(getScale()); 
 int PIC_WIDTH= webView.getRight()-webView.getLeft(); 

La méthode getWidth de l’object Display est obsolète. Remplacez onSizeChanged pour obtenir la taille de WebView dès qu’elle est 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); 

va travailler, mais n’oubliez pas de supprimer quelque chose comme:

  

s’il existait dans le fichier html ou modifiait l’utilisateur-scalable = yes, sinon il ne le ferait 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.

Ajoutez ces lignes à la chaîne HTML.

    

Résultat après avoir ajouté le code ci-dessus à la chaîne HTML:

       

Cela aidera à ajuster l’émulateur en fonction de la page Web:

 WebView wb; //CALL THIS METHOD wb.setInitialScale(50); 

Vous pouvez définir l’échelle initiale en pourcentage, comme indiqué ci-dessus.

En théorie, la combinaison de:

 settings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS); 

avec

 settings.setUseWideViewPort(false) 

corrige le problème, en encapsulant le contenu et en l’ajustant à l’écran. Mais le NARROW_COLUMNS est devenu obsolète. Je vous conseille de lire ce fil ci-dessous qui explore le problème 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,https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"text/htmlhttps://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/",https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/"UTF-8https://stackoverflow.com/questions/3916330/android-webview-webpage-should-fit-the-device-screen/", null); webView.getSettings().setBuiltInZoomControls(true); webView.getSettings().setSupportZoom(true); webView.getSettings().setDisplayZoomControls(true); webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);