2014-04-15 61 views
3

我需要獲取網頁視圖的高度,以便可以通過編程方式計算出頂部邊距。我使用的AddOnPreDraw方法可以在手機上正常工作,但只要在平板電腦上使用,它就會返回null。Android獲取網頁視圖的高度

ViewTreeObserver viewTreeObserver = topContent.getViewTreeObserver(); 

    viewTreeObserver.addOnPreDrawListener(new OnPreDrawListener() { 

     @Override 
     public boolean onPreDraw() { 
      int height = topContent.getMeasuredHeight(); 
      if (height != 0) { 
       Log.d("Web View Height", "Continue Height: " + height); 
        RelativeLayout instructions = (RelativeLayout) findViewById(R.id.info_layout); 
        instructions.post(mAddTabletMargin); 
      } 
      topContent.getViewTreeObserver().removeOnPreDrawListener(
        this); 
      return false; 
     } 

    }); 

所以問題一是爲什麼它可以在手機上工作,但不是平板電腦? 和問題2有沒有其他的方法可以用來獲取webvie的高度?

在此先感謝。

回答

0

這是一個簡單的方法來執行此操作。

webView.post(new Runnable() { 

     @Override 
     public void run() { 
      // TODO Auto-generated method stub 

      webView.getHeight(); 
     } 
    }); 
+0

這看起來很完美,但唯一的問題是,爲什麼我的方式在諸如nexus 5和samsung galaxy s4等手機上工作? – Paddy1990

+0

它仍然沒有得到高度,它只在nexus 7上繪製webviews之前運行我的onPreDraw方法! – Paddy1990

+0

多數民衆贊成那是不可能的確保你在UIthread上運行這個方法 –

相關問題