GetContentHeight () не работает должным образом

Я пытаюсь получить высоту содержимого веб-просмотра. Он содержит html-строку. Проблема в том, что getContentHeight () всегда возвращает одно и то же значение (392), независимо от того, как долго длится html-строка.

Эта проблема привела меня в бешенство. Позвольте мне предположить: ваш контент не загружен из Интернета или из файловой системы, а вы делаете вызов WebView.loadData() или WebView.loadDataWithBaseUrl() (где вы указываете null или пустую строку в последнем случае ). Правильно?

Если да, то, я думаю, у меня есть решение для вас, которое было вдохновлено этим обсуждением : обязательно используйте метод WebView.loadDataWithBaseUrl() и baseUrl который не является null , а не пустой строкой и отличается для разных данных контента , Согласно документации SDK, baseUrl используется только для оценки относительных URL-адресов внутри данных (например, теги <img> не указывающие имя домена в их атрибуте src ), поэтому, если ваши данные не ссылаются на внешний контент, я думаю, вы можете генерировать «виртуальные «URL (не пробовал).

Кажется, что WebView просматривает URL-адрес и, если он не меняет всех последующих вызовов loadData... , приведет к той же высоте WebView .

У меня была проблема с getContetHeight (). Сначала в обратном вызове WebViewClient.OnPageFinish () высота контента еще не была установлена, поэтому я сделал это довольно грубое решение.

 Handler h; Runnable scroll_updater = new Runnable() { @Override public void run() { if(Thread.interrupted()) return; if(lyrics.getContentHeight() == 0) h.postDelayed(this, 100); setLyricsScroll(); } };