Получение высоты содержимого 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

эти два метода будут возвращать всю ширину / высоту с возможностью прокрутки, а не фактическую ширину / высоту веб-просмотра на экране

Другие вопросы по тегам