2014-04-15 4 views
3

프로그래밍 가능한 방식으로 상단 여백을 계산할 수 있도록 웹보기의 높이를 가져와야합니다. 전화에서 잘 작동하는 AddOnPreDraw 메서드를 사용하고 있지만 타블렛에서 사용하면 null이 반환됩니다.안드로이드는 웹보기의 높이를 얻습니다.

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

    }); 

그래서 quesiton은 전화가 아닌 정제에서 작동합니까? 질문 2 거기에 그려진 webvie wonce의 높이를 얻는 데 사용할 수있는 다른 방법이 있습니까?

미리 감사드립니다.

답변

0

다음은이 작업을 수행하는 간단한 방법입니다.

webView.post(new Runnable() { 

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

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

완벽하게 보이지만, 유일한 방법은 넥서스 5와 삼성 갤럭시 s4와 같은 휴대폰에서 왜 작동합니까? – Paddy1990

+0

여전히 높이가 나오지 않습니다. 웹 뷰가 넥서스 7에서만 그려지기 전에 내 onPreDraw 메소드를 실행하고 있습니다! – Paddy1990

+0

그게 불가능합니다 당신이 UIthread에이 방법을 실행하고 있는지 확인하십시오 –

관련 문제