10
votes

Comment obtenir une largeur et une hauteur d'une vision Web dans Android

Je veux déterminer la largeur et la hauteur du webview . Je l'ai déjà essayé en utilisant: xxx

mais le journal résultant les montre toujours à 0.


2 commentaires

Pouvez-vous envoyer votre code? N'oubliez pas que vous ne pouvez pas obtenir la largeur et la hauteur d'une vue dans la méthode Oncreate, car la mise en page ne s'est pas encore produite.


Je mets mon code est ici hauteur = mainwebview.getheight (); System.err.println ("Afficher la hauteur totale ->" + mainwebview.getheight ()); System.err.println ("Hauteur de mesure ->" + MAINWEBVIEW.GETMASEDHEIGHTS ());


12 Réponses :


1
votes

hmmm - j'ai parcouru la source WEVVIEW et je peux voir qu'à l'intérieur de l'intérieur, ils utilisent la vue # GetWidth and View # GetHeight Voici l'un des méthodes privées webview S: xxx

Comme indiqué dans les commentaires, vous devez vous assurer que vous devez la mesurer après avoir attribué la mise en page d'activité, par exemple setContentView (r.layout.mylayout);


0 commentaires

2
votes

Vous recherchiez probablement les tailles trop tôt, probablement dans le Oncreate . Au lieu de cela, essayez ceci: xxx


0 commentaires

2
votes

Le Onpagefini L'approche de rappel ne fonctionne pas lors de l'utilisation de LOADDATA ou LOADDATAWITHBASEURL . J'ai vu une autre solution sur andromedev en utilisant JavaScript, mais je ne suis pas convaincu que c'est la meilleure voie à suivre.


0 commentaires

0
votes

Si vous voulez obtenir la hauteur et la largeur de temps de chargement, vous ne pouvez pas l'obtenir car la durée de charge ne peut pas l'obtenir. Je suggère d'utiliser le webview Touchevent et obtenez la hauteur et la largeur. Sinon, utilisez une autre vue Cliquez sur l'événement et obtenez la hauteur et la largeur.

webView.getWidth();
webView.getHeight();


0 commentaires

1
votes

Vous vérifiez Taille de WebView trop tôt. Vous pouvez essayer cela dans la méthode suivante

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    // TODO Auto-generated method stub
    super.onWindowFocusChanged(hasFocus);
            webView.getWidth();
            webView.getHeight();
}


0 commentaires

2
votes

Pour quelqu'un d'autre qui lutt toujours. Utilisez ces méthodes pour obtenir la hauteur et la largeur de votre webview.

computeHorizontalScrollRange(); -> for width 
computeVerticalScrollRange(); -> for height


2 commentaires

Notez que celles-ci peuvent renvoyer des valeurs différentes à GetWidth () et GetHeight () car ils renvoient toute la largeur / hauteur défilée plutôt que la largeur / hauteur réelle de la vue WebView à l'écran.


Notez également que ces méthodes sont protégées et que vous pourriez avoir du mal à les utiliser à partir de votre présentation personnalisée, par exemple.



5
votes

Voici une solution plus élégante xxx


0 commentaires

0
votes

J'ai eu le même problème. Je viens de mettre initwebview forte> méthode dans onwindowfocuschanged strong>.

public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    initWebView();
}


private void initWebView(){
    if(isOnline()){
        venueWebView = (WebView) findViewById(R.id.venueWebView);
        String url = "some url";
        int viewWight = venueWebView.getWidth();
        int viewHeight = venueWebView.getHeight();
        venueWebView.loadUrl(url);
    }


0 commentaires

0
votes

J'espère que ma réponse aide quelqu'un.

Si vous souhaitez obtenir une hauteur de webview code> après le chargement de contenu, cela pourrait être utile. P>

ViewTreeObserver viewTreeObserver  = mWebView.getViewTreeObserver();
viewTreeObserver.addOnPreDrawListener(new OnPreDrawListener() {
 @Override
 public boolean onPreDraw() {                                
     int height = mWebView.getMeasuredHeight();
        if( height != 0 ){
      Toast.makeText(getActivity(),"height:"+height,Toast.LENGTH_SHORT).show();
                             mWebView.getViewTreeObserver().removeOnPreDrawListener(this);
                       }
                       return false;
               }
       });


0 commentaires

1
votes

Vous avez besoin de la largeur et de la hauteur du contenu WEBVIEW, après avoir chargé votre HTML. Oui vous faites, mais il n'y a pas de méthode getContentWidth (seulement une valeur de port de vue), Et le getContentHeighight () est inexact!

Réponse: Sous-classe Webview: P>

/*
  Jon Goodwin
*/
package com.example.html2pdf;//your package

import android.content.Context;
import android.util.AttributeSet;
import android.webkit.WebView;

class CustomWebView extends WebView
{
    public int rawContentWidth   = 0;                         //unneeded
    public int rawContentHeight  = 0;                         //unneeded
    Context    mContext          = null;                      //unneeded

    public CustomWebView(Context context)                     //unused constructor
    {
        super(context);
        mContext = this.getContext();
    }   

    public CustomWebView(Context context, AttributeSet attrs) //inflate constructor
    {
        super(context,attrs);
        mContext = context;
    }

    public int getContentWidth()
    {
        int ret = super.computeHorizontalScrollRange();//working after load of page
        rawContentWidth = ret;
        return ret;
    }

    public int getContentHeight()
    {
        int ret = super.computeVerticalScrollRange(); //working after load of page
        rawContentHeight = ret;
        return ret;
    }
//=========
}//class
//=========


0 commentaires

1
votes

J'ai utilisé un travail autour, au lieu d'aller chercher de WebView get d'affichage d'affichage, en supposant que vous disposez de la largeur de WebView presque égale à la taille de l'écran téléphonique et à la hauteur presque égale à la hauteur de l'écran de téléphone.

DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int height = (int) displayMetrics.heightPixels*0.9;
int width = displayMetrics.widthPixels;


0 commentaires

0
votes

Si vous souhaitez obtenir la hauteur d'origine après le chargement du contenu, vous pouvez utiliser le code ci-dessous. Bien que le code soit obsolète, cela fonctionne parfaitement. xxx


0 commentaires