Intereting Posts
Аутентификация пользователя, входящего в систему с FB на моем сервере, с помощью диспетчера учетных записей Android Webview не загружает pdf-файлы по ссылке Что делать с AsyncTask в onPause ()? USB-драйвер Asus Nexus 7 Windows 7 Как установить android: layout_columnWeight = "1" программно для элемента в поддержке android v7 Gridlayout Настройка SDL2 на Windows Android Тернарный оператор возвращает значение – Java / Android В Blackberry Android-плеер поддерживает push-уведомления или C2dm? Передача двоичного блоба через поставщика контента Как добавить индикатор загрузки в AutoCompleteTextView Найдите размеры (высота, ширина) объекта с помощью камеры Ошибка: (31, 0) Метод Gradle DSL не найден: 'jniDebugBuild ()' Обнаружение устройства для отладки (ADB) не работает Анимированный логотип вместе с рушащейся панелью инструментов в CoordinatorLayout Обновление списков изображений ListView для Android ListView с использованием AsyncTask Причины Просмотр утилизации

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