0

現在、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 に戻ります。何が起きてる?

4

1 に答える 1