2013-05-28 4 views
4

Я столкнулся с той же проблемой here. В принципе у меня есть текст-WebView-текст в вертикальной линейной компоновке, как показано ниже:WebView не уменьшает высоту при сжатии контента

__________ 
| Textview | 
|__________| 
| WebView | <-can zoom 
|__________| 
| TextView | 
|__________| 

WebView имеет тогл, когда содержание изменяет масштаб изображения больше WebView приспосабливается к большему размеру и надавите TextView:

__________ 
| Textview | 
|__________| 
|   | 
|   | 
| WebView | 
|   | 
|__________| 
| TextView | 
|__________| 

До сих пор все в порядке. Проблема заключается в том, когда я отдалиться меньшего размера, содержимое внутри WebView сжимается, но WebView itslelf еще такого же размера, оставляя большую зияющую пустоту:

__________ 
| Textview | 
|__________| 
| WebView | 
|   | 
|   | 
|   | 
|__________| 
| TextView | 
|__________| 

Моя проблема также похожа на this one. Вызов invalidate() не будет работать, и я не хочу воссоздавать фрагмент без разрушения активности (я действительно не знаю, как это сделать). Мой вопрос: Как обновить/изменить размер веб-представления, когда я увеличиваю его размер от большего до меньшего размера? (ПРИМЕЧАНИЕ: я добавляю все представления динамически, поэтому, пожалуйста, покажите мне, как я могу решить его программно. Спасибо)

Эта странная проблема не существует в Froyo 2.2, но это проблема с ошибкой в ​​реальном устройстве JB 4.2.2 ,

+0

Ответ на этот вопрос, кажется, что вы ищете для. Это именно то, что я искал. http://stackoverflow.com/questions/15546416/how-to-shrink-webview-size-dynamically-according-to-its-content – jnrcorp

ответ

0

Добавьте фрагмент кода, как следовать, он установит высоту WebView при загрузке страницы

private void setupWebView() { 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.setWebViewClient(new WebViewClient() { 
     @Override 
     public void onPageFinished(WebView view, String url) { 
      webView.loadUrl("javascript:MyApp.resize(document.body.getBoundingClientRect().height)"); 
      super.onPageFinished(view, url); 
     } 
    }); 
    webView.addJavascriptInterface(this, "MyApp"); 
} 

@JavascriptInterface 
public void resize(final float height) { 
    getActivity().runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      ViewGroup.LayoutParams lp = webView.getLayoutParams(); 
      lp.width = getResources().getDisplayMetrics().widthPixels; 
      lp.height = (int) (height * getResources().getDisplayMetrics().density); 
      webView.setLayoutParams(lp); 
     } 
    }); 
} 

Modified из раствора на https://capdroid.wordpress.com/2014/08/07/resizing-webview-to-match-the-content-size/

Смежные вопросы