10

の幅と高さを決めたいですWebView。私はすでにそれを使用して試しました:

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

しかし、結果のログは常にそれらが 0 であることを示しています。

4

12 に答える 12

2

サイズを確認するのが早すぎた可能性がありonCreateます。代わりに、これを試してください:

webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageFinished(WebView webView, String url) {
                super.onPageFinished(webView, url);
                Log.i(TAG, findViewById(R.id.my_component).getWidth(););
            }
        });
于 2010-12-19T01:48:55.217 に答える
2

またはを使用する場合、onPageFinishedコールバック アプローチは機能しません。Andromedevで JavaScript を使用した別の解決策を見ましたが、これが最適な方法であるとは確信していません。loadDataloadDataWithBaseURL

于 2012-04-24T02:40:26.973 に答える
1

HTML を読み込んだ後、WebView CONTENTS の幅と高さが必要です。はい、そうですが、getContentWidth メソッド (ビューポートの値のみ) はありません。また、getContentHeight() は不正確です。

回答: サブクラス WebView:

/*
  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
//=========
于 2016-07-24T19:23:29.283 に答える
1

うーん - WevView のソースを調べたところ、内部で View#getWidth と View#getHeight を使用していることがわかります。これは、WebViewプライベート メソッドの 1 つです。

/*
 * Return the width of the view where the content of WebView should render
 * to.
 */
private int getViewWidth() {
    if (!isVerticalScrollBarEnabled() || mOverlayVerticalScrollbar) {
        return getWidth();
    } else {
        return getWidth() - getVerticalScrollbarWidth();
    }
}

コメントに記載されているように、アクティビティ レイアウトを割り当てた後、それを測定していることを確認する必要があります。setContentView(R.layout.mylayout);

于 2009-10-23T18:03:42.460 に答える
1

webview のサイズをチェックするのが早すぎます。次の方法でこれを試すことができます

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    // TODO Auto-generated method stub
    super.onWindowFocusChanged(hasFocus);
            webView.getWidth();
            webView.getHeight();
}
于 2013-07-31T11:01:03.620 に答える
0

私の答えが誰かに役立つことを願っています。

コンテンツが読み込まれた後の高さを取得したい場合webviewは、これが役立ちます。

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;
               }
       });
于 2015-03-21T14:17:37.747 に答える
0

私も同じ問題を抱えていました。initWebViewメソッドをonWindowFocusChangedtに入れただけです。

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);
    }
于 2014-11-14T16:55:31.220 に答える
0

高さと幅の読み込み時間を取得したい場合は、読み込み時間が取得できないため、取得できません。webview Touchevent を使用して、高さと幅を取得することをお勧めします。それ以外の場合は、別のビュー クリック イベントを使用して、高さと幅を取得します。

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

これを使って。

于 2012-08-16T07:27:02.963 に答える