Al usar WebViewClient y/o WebChromeClient, puede obtener un detector para cuando se cargue la página; sin embargo, esto a veces se llama antes de que WebView tenga contenido, antes de que se muestre algo.¿Hay un oyente para cuando WebView muestra su contenido?
¿Cuál sería un método eficiente para determinar cuándo WebView ha mostrado su contenido?
Editar: (Tratando de ser más clara)
Cuando me carga una página en un WebView, que desea establecer el desplazamiento a una posición específica. Parece que la posición de desplazamiento no se puede establecer hasta que se cargue la página y tenga una altura de contenido real. Por lo tanto, he probado dos enfoques diferentes para determinar cuándo la página ha terminado de cargarse, onPageFinished() desde WebViewClient y también onProgressChanged() desde WebChromeClient. Ambos me dicen cuándo la página ha terminado de cargarse.
Sin embargo, el problema es que a veces se llama antes de que se muestre la página y, por lo tanto, la página no tiene altura y la llamada de desplazamiento no hace nada.
Estoy tratando de encontrar una manera sólida de determinar cuándo la página está lista para ser desplazada, es decir. cuando tiene su altura de contenido
Imagino que podría configurar un ciclo de comprobación después de que termine de cargar para seguir buscando cuando la altura está disponible, pero que parecía bastante el truco. Esperando que haya una manera más limpia.
Esta es la mejor solución que he encontrado. Sin embargo, hay ocasiones en que no se llama a invalidate() cuando se actualiza el contenido de WebView en un WebView. Un caso inusual es cuando el contenido anterior se coloca en la parte superior cuando se llama a loadDataWithBaseURL, así que también agregué una llamada demorada para invalidar después de llamar a loadDataWithBaseURL. – Martin
De hecho, la mejor solución. Agregar 'getProgress() == 100' me ayudó a asegurarme de que el contenido se procesara por completo. –
Sé que esto es un poco tarde, pero novato aquí: ¿dónde pongo el código mencionado anteriormente? Donde quiera que lo coloque, Android Console dice que no es reconocido. – user4951834