Получение высоты содержимого WebView после загрузки Android
Я пытаюсь применить функцию разворачивания коллапса в Webview, основываясь на его высоте содержимого, но я всегда получаю неправильное значение. Вот мой код
public class MesuredHeightWebView extends WebView {
public MesuredHeightWebView(Context context) {
super(context);
}
public MesuredHeightWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MesuredHeightWebView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public void invalidate() {
super.invalidate();
if (getContentHeight() > 0) {
// WebView has displayed some content and is scrollable.
if(listener!=null)
listener.updateContentHeight(getContentHeight());
}
}
WebViewContentHeight listener;
public void setChangeContentListener(WebViewContentHeight listener) {
this.listener = listener;
}
}
а затем во фрагменте я попытался получить высоту содержимого
webView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
if(newProgress==100)
{
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
webView.setChangeContentListener(new WebViewContentHeight() {
@Override
public void updateContentHeight(int height) {
if(height>0 && getActivity()!=null) {
System.out.println("the height2 is" + height + " " + Utils.convertPixelsToDp(height, getActivity()));
final int text_height = height;
но моя проблема в том, что я всегда получаю неправильный результат Спасибо
1 ответ
Используйте следующие методы вместо getContentHeight()
метод:
computeHorizontalScrollRange(); -> for width
computeVerticalScrollRange(); -> for height
эти два метода будут возвращать всю ширину / высоту с возможностью прокрутки, а не фактическую ширину / высоту веб-просмотра на экране