WebView
の幅と高さを決めたいと思います。私はすでに使用して、それを試してみました:androidのWebviewの幅と高さを取得する方法
webView.getWidth();
webView.getHeight();
をしかし、結果のログは常に0
WebView
の幅と高さを決めたいと思います。私はすでに使用して、それを試してみました:androidのWebviewの幅と高さを取得する方法
webView.getWidth();
webView.getHeight();
をしかし、結果のログは常に0
なるためにそれらを示しうーん - 私はWevViewソースから見て、私は内部的に、彼らはビュー#のgetWidthとを使用していることがわかりますビュー#のgetHeightはここWebView
のプライベートメソッドの一つだ:
/*
* 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);
おそらくサイズがあまりにも早く、おそらくonCreate
で確認していました。 loadData
またはloadDataWithBaseURL
を使用している場合onPageFinished
コールバックアプローチは動作しません
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(););
}
});
このメソッドは機能しません。高さは常に0です。 – Chan
:代わりに、これを試してみてください。 JavaScriptを使用してAndromedevの別の解決策を見ましたが、これが最善の方法であるとは確信していません。
高さと幅の読み込み時間を取得したい場合、読み込み時間で取得できないため取得できません。私はwebview Toucheventを使用し、高さと幅を取得することをお勧めします。それ以外の場合は、別のビューのクリックイベントを使用して、高さと幅を取得します。
webView.getWidth();
webView.getHeight();
これを使用してください。
あなたはwebviewのサイズを早期に確認しています。 あなたはまだ闘争誰のための方法
@Override
public void onWindowFocusChanged(boolean hasFocus) {
// TODO Auto-generated method stub
super.onWindowFocusChanged(hasFocus);
webView.getWidth();
webView.getHeight();
}
を以下でこれを試すことができます。 これらのメソッドを使用して、Webビューの高さと幅を取得します。
computeHorizontalScrollRange(); -> for width
computeVerticalScrollRange(); -> for height
getWidth()とgetHeight()は、画面上のwebviewの実際のwidht/heightではなく、スクロール可能な幅/高さを返すので、 。 – aaronmarino
また、これらのメソッドは保護されているため、たとえばカスタムレイアウト内から使用するのが難しい場合があります。 –
ここではよりエレガントな解決策は、私は同じ問題を抱えていた
public void onCreate(Bundle savedInstanceState) {
webView = (WebView) findViewById(R.id.webView1);
webView.addOnLayoutChangeListener(new OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right,int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
int w= webView.getWidth();
int h= webView.getHeight();
}
});
}
です。私はちょうど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);
}
私の回答が誰かに役立つことを願います。
コンテンツがロードされた後で、高さを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;
}
});
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
//=========
あなたのコードを投稿することができますか?レイアウトがまだ発生していないため、OnCreateメソッドでビューの幅と高さを取得できないことに注意してください。 – Whaledawg
私のコードはここに置くheight = mainWebView.getHeight(); System.err.println( "合計高さを表示 - >" + mainWebView.getHeight()); System.err.println( "高さの測定 - >" + mainWebView.getMeasuredHeight()); –