высота веб-просмотра возвращается 0 - PullRequest
1 голос
/ 13 марта 2020

когда я пытаюсь ввести код ниже, webview.heigth возвращает 0. Я не понимаю, что не так с кодом. Я также пробовал measuredheight вместо высоты, но результат все тот же.

 if (!TextUtils.isEmpty(realtyDetail.descriptionHtml)) {
        webViewHtml.loadData(FormatUtil.formatSpecialCharsForWebView(realtyDetail.descriptionHtml), "text/html; charset=utf-8", "UTF-8")
        ellWebView.visible()
        txtDescription.visible()
        webViewHtml.settings.javaScriptEnabled = true

        val vto = view!!.viewTreeObserver;
        vto.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
            override fun onGlobalLayout() {
                if (vto.isAlive) {
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                        vto.removeOnGlobalLayoutListener(this)
                    } else {
                        @Suppress("DEPRECATION")
                        vto.removeGlobalOnLayoutListener(this)
                    }
                    if (!webViewHtmlSet && webViewHtml != null) {
                        val limit = DeviceUtil.convertDpToPixel(400f, context)

                        if (webViewHtml.height > limit) {
                            setWebView(limit)
                        }
                    }
                }
            }
        })

макет:

 <WebView
        android:id="@+id/webViewHtml"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

html :( моя высота просмотра веб-страницы wrap_content, но только ниже html не работает)

<font style="font-size:22px"><font style="background-color:#00ff00"><font style="color:#000000"><i>KOCAELİ KARAMÜRSEL AVCİ KOYDE KÖY CIVARI MEVKİNDE 723M2 MUSTEKİL PARSEL SATILIK TIR <br/></i></font></font></font><font style="font-size:22px"><font style="background-color:#00ff00"><font style="color:#000000"><i><br/></i></font></font></font><font style="font-size:22px"><font style="background-color:#00ff00"><font style="color:#000000"><i>PARKE YOLA CEPHE LI DÜMDÜZ &#37;30 KONUT IMARLI ARSA,DIR DÜMDÜZ CEVİZ BAHÇESİ ELEKTRİK HATTI ŞEBEKE SU HATTI YANINDAN GEÇMEKTEDİR KANALIZASYON TÜM ALT YAPILARI TAMAMLANMIŞ TIR TOPLU ULAŞIM VARDIR ARADIĞINIZ HER ŞEY YÜRÜ ME MESAFESINDE DİR CAMI KAHVANE BERBER NALBUR PETROL OFİSİ SAĞLIK OCAĞI İTFAİYE ILKÖĞRETİM <br/></i></font></font></font><font style="font-size:22px"><font style="background-color:#00ff00"><font style="color:#000000"><i><br/></i></font></font></font><font style="font-size:22px"><font style="background-color:#00ff00"><font style="color:#000000"><i>Not istek halinda yan KOMŞU  parselde SATILIK 1013m2<br/></i></font></font></font><font style="font-size:22px"><font style="background-color:#00ff00"><font style="color:#000000"><i><br/></i></font></font></font><font style="font-size:22px"><font style="background-color:#00ff00"><font style="color:#ff0000"><i>DAHA DETAYLI BILGI ALMAK İÇİN BIZI ARAYINIZ </i></font></font></font>

кстати, это работает на симуляторе, но на реальном устройстве html не работает, а высота возвращается 0.

1 Ответ

1 голос
/ 15 марта 2020

Присоедините viewTreeObserver к обратному вызову WebView на onPageFinished() на WebViewClient, как показано ниже. он дает точную высоту вашего веб-вида.

  webView.webViewClient = Client()
    webView.loadData(Base64.encodeToString("<font style=\"font-size:22px\"><font style=\"background-color:#00ff00\"><font style=\"color:#000000\"><i>KOCAELİ KARAMÜRSEL AVCİ KOYDE KÖY CIVARI MEVKİNDE 723M2 MUSTEKİL PARSEL SATILIK TIR <br/></i></font></font></font><font style=\"font-size:22px\"><font style=\"background-color:#00ff00\"><font style=\"color:#000000\"><i><br/></i></font></font></font><font style=\"font-size:22px\"><font style=\"background-color:#00ff00\"><font style=\"color:#000000\"><i>PARKE YOLA CEPHE LI DÜMDÜZ &#37;30 KONUT IMARLI ARSA,DIR DÜMDÜZ CEVİZ BAHÇESİ ELEKTRİK HATTI ŞEBEKE SU HATTI YANINDAN GEÇMEKTEDİR KANALIZASYON TÜM ALT YAPILARI TAMAMLANMIŞ TIR TOPLU ULAŞIM VARDIR ARADIĞINIZ HER ŞEY YÜRÜ ME MESAFESINDE DİR CAMI KAHVANE BERBER NALBUR PETROL OFİSİ SAĞLIK OCAĞI İTFAİYE ILKÖĞRETİM <br/></i></font></font></font><font style=\"font-size:22px\"><font style=\"background-color:#00ff00\"><font style=\"color:#000000\"><i><br/></i></font></font></font><font style=\"font-size:22px\"><font style=\"background-color:#00ff00\"><font style=\"color:#000000\"><i>Not istek halinda yan KOMŞU  parselde SATILIK 1013m2<br/></i></font></font></font><font style=\"font-size:22px\"><font style=\"background-color:#00ff00\"><font style=\"color:#000000\"><i><br/></i></font></font></font><font style=\"font-size:22px\"><font style=\"background-color:#00ff00\"><font style=\"color:#ff0000\"><i>DAHA DETAYLI BILGI ALMAK İÇİN BIZI ARAYINIZ </i></font></font></font>".toByteArray(), Base64.NO_PADDING), "text/html", "base64")

....

private inner class Client: WebViewClient(){
        override fun onPageFinished(view: WebView?, url: String?) {
            super.onPageFinished(view, url)
            webView.viewTreeObserver.addOnGlobalLayoutListener {
                Log.d("xifi", "${webView.height}")
            }
        }
    }

Это вывод, который я получил для вашего HTML Logcat

Это эмулятор, отображающий веб-страницу

Emulator

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...