2016-05-24 2 views
0

APPAndroid, пролистайте WebView в Y положении после того, как данные будут загружены описание

Я пишу код для андроид EPUB читателя.

книга часть (HTML) загружается в WebView

Проблема

После поворота устройства я пытаюсь перейти к последней позиции в WebView в виде текста.

Данные загружаются в webview с помощью loadData (текст, ..., ...), потому что я не загружаю веб-страницу из URL-адреса, а из локально сохраненного html в файле EPub.

webView.loadData(text, "text/html; charset=UTF-8", null); 

я узнал, эта функция является асинхронной и я должен ждать, пока не будет полностью загружен данные и после этого попытаться прокрутить.

я пытался советовали решения, такие как

final int Y = savedInstanceState.getInt(CURRENT_WEBVIEW_POSITION_Y); 

webView.postDelayed(new Runnable() { 
    public void run() { 
     if (webView.getProgress() == 100) { 
      webView.postDelayed(new Runnable() { 
       public void run() { 
        webView.scrollTo(0, Y); 
       } 
      }, 10); 
     } else { 
      webView.post(this); 
     } 
    } 
}, 10); 

или

final int Y = savedInstanceState.getInt(CURRENT_WEBVIEW_POSITION_Y); 

while (webView.getProgress() < 100){ 
    Thread.sleep(50); 
} 
Thread.sleep(10); 
webView.scrollTo(0, Y); 

, но они не работали.

Y Позиция веб-пространства сохраняется и извлекается из пучка правильно.

ответ

0

Проблема решена с модификацией первого кода:

webView.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     if (webView.getContentHeight() > 0){ 
      webView.scrollTo(0, Y); 
      webView.removeCallbacks(this); 
     } else { 
      webView.postDelayed(this, 10); 
     } 
    } 
}, 10); 

решенный здесь Is there a listener for when the WebView displays it's content?

Смежные вопросы