GetContentHeight () не работает должным образом - PullRequest
4 голосов
/ 23 января 2011

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

Ответы [ 2 ]

3 голосов
/ 06 апреля 2011

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

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

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

2 голосов
/ 19 января 2012

У меня была эта проблема и с 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();
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...