現在、Android webview scrollTo 機能に問題があります。(時々) 正常に動作していますが、webview でリンクをクリックすると、画面が 0,0 の位置にリセットされることがあります。
これが私のコードです。
public void onPageFinished(WebView webview, String Url) {
final WebView newView = webview;
if (ScrollX > 0) { // <-- int variable containing users Scroll position
newView.postDelayed(new Runnable() {
public void run() {
if (view.getScrollX() > 0) {
// ScrollX and ScrollY sometimes get reset before scrollTo happens, Why?
newView.scrollTo(ScrollX, ScrollY);
pageloaded = true;
} else {
newView.scrollTo(ScrollX, ScrollY);
newView.post(this);
}
}
}, 10);
}
}
だからここに何が起こっているのかです。私の webviews onPageFinished で、webviews のスクロール位置をデフォルトの 0,0 から、ユーザーがスクロール位置に設定したものに変更しています。webview の postDelayed を使用して、webview が完全に読み込まれるまで物事を遅らせます。10 ミリ秒ごとに、私の postDelayed は、webviews getScrollX() が何か > 0 を返すかどうかを確認します (webview がロードされたことを意味します)。その場合、コードの webview スクロール位置セクションを変更し、webview が読み込まれたことを確定します。そうでない場合は、webviews のスクロール位置を設定しようとした後にコードが再実行されます。そうすれば、次は if ステートメントが true と評価され、コードの再実行部分を回避できます。
ここに問題があります.view.getScrollX()> 0を使用してwebviewがロードされているかどうかを判断すると、正常に動作します。ただし、view.getScrollX() > 0 が true と評価されることがあります。しかし、webview の scrollTo 関数を使用すると、scrollTo の前、または scrollTo の使用中に ScrollX 変数と ScrollY 変数がリセットされ、webview が 0,0 に戻ります。何が起きてる?