Per semplificare: desidero salvare la posizione corrente (probabilmente diverse posizioni) in un file html visualizzato in una WebView al successivo ripristinarlo. Qualsiasi piccolo suggerimento sarebbe d'aiuto. :)Ottenere la posizione del documento in una WebView?
risposta
Se per "la posizione corrente" si intende un punto da qualche parte in una determinata pagina, non credo sia possibile ... almeno non puramente da Java. L'intera API WebKit esposta a Java è priva di tutto ciò che riguarda il contenuto delle pagine.
Se si ha il controllo sul contenuto della pagina, e c'è un modo per sapere queste posizioni tramite in-page Javascript, si potrebbe:
Passo # 1: Utilizzare WebView#addJavascriptInterface()
per aggiungere un oggetto con una sorta di recordPosition()
metodo , salvataggio delle informazioni dovunque sia appropriato
Passaggio 2: creare una funzione Javascript che chiami recordPosition()
sull'oggetto iniettato.
e quindi:
Passo # 3 bis: trigger che la funzione Javascript da Javascript stesso (ad esempio, sulla base di uno scatto), o
Passo 3b: Chiamare loadUrl("javascript:...");
sul WebView
, dove ...
è sostituito dal codice Javascript per attivare la funzione Javascript dal punto 2.
Il ripristino di queste posizioni dovrebbe funzionare allo stesso modo: fare eseguire JavaScript i ripristini effettivi, eventualmente attivati dal codice Java.
Si noti che non ho idea se ciò che si desidera (ottenere/impostare la posizione corrente) sia disponibile da Javascript, poiché non sono un programmatore per browser.
L'approccio che ho preso è stato il seguente:
Nel metodo onSaveInstanceState()
, calcolare quanto in basso nella pagina l'utente aveva fatto scorrere.
int contentHeight = webView.getContentHeight();
int scrollY = webView.getScrollY();
float scrollPercent = ((float) scrollY/((float) contentHeight));
Mettere da parte nel pacchetto. Quando si ripristina la pagina nel metodo di onCreate()
, attendere che la pagina termini il caricamento (in WebClient.onPageFinished()
), scorrere fino alla posizione registrata:
int contentHeight = webView.getContentHeight();
int y = (int) ((float) contentHeight * scrollPercent);
webView.scrollTo(0, y);
- Utilizzando un
float
e calcolando un rapporto funziona nel caso di lanciare tra paesaggio e ritratto. - Può funzionare in modo corretto ma non perfettamente se miscelato con l'autorizzazione di immagini.
- La scala può anche essere presa in considerazione. Tendo a memorizzare la scala in una preferenza nel metodo
onPause()
e quindi awebView.setInitialScale(scale)
prima di iniziare a caricare la pagina. - Ho trovato che l'impostazione della visualizzazione Web invisibile quando
scrollPercent > 0
sembra migliore.
- 1. Ottenere la posizione del cursore in una UITextView su iPhone?
- 2. ottenere la posizione esatta del testo dall'immagine in tesseract
- 3. Come ottenere la posizione del fotogramma UIView dopo la trasformazione?
- 4. Salvare lo stato di una WebView e ricaricare la posizione
- 5. Ottieni altezza documento PDF in iOS WebView
- 6. Posizione del documento nella serie di risultati in Solr
- 7. come ottenere la posizione del modulo
- 8. Ottenere la posizione in onCreateViewHolder
- 9. Come ottenere la posizione del cursore in bash?
- 10. Come ottenere la posizione di un elemento in UIWebView?
- 11. Ottenere la posizione del cursore di UITextField in ios
- 12. Come ottenere la posizione del mouse sullo schermo in WPF?
- 13. Come posso ottenere la posizione del cursore in un'app console?
- 14. come ottenere la posizione del clic in onClickListener?
- 15. Come ottenere/impostare la posizione del cursore in Silverlight textbox?
- 16. Ottenere la posizione di JPopupMenu
- 17. ottenere la posizione corrente da un XmlReader
- 18. Ottenere WebView altezza contenuti una volta la sua carica Android
- 19. Selezione del testo in una WebView?
- 20. Come ottenere la posizione degli elementi in una lista?
- 21. Come ottenere la posizione chiave da una HashMap in Java
- 22. Cursore di posizione all'inizio/fine del documento Word
- 23. Come ottenere la posizione corretta di Element?
- 24. Ottenere un albero DOM del documento XML
- 25. Come ottenere il valore del titolo del documento in lattice?
- 26. ottenere la cronologia WebView da WebBackForwardList
- 27. cross browser confronta documento posizione
- 28. Come ottenere il numero del documento Mangusta?
- 29. Angularjs ottenere la posizione elemento
- 30. come ottenere la posizione corrente in FragmentPagerAdapter?
Sorprendente risposta! Molte grazie. Domanda correlata: http://stackoverflow.com/questions/1091048/alternatives-to-window-scrollmaxy – yanchenko