2

私のアプリケーションでは、WebView に読み込まれた HTML ページがあります。同じページを別の言語でロードする switchView ボタンを実装しています。言語切り替え時のWebViewのスクロール位置を維持したい。SOに関するいくつかの調査の後、私は以下を実装しました。

これは最初の WebView です

        switchB = (Button)findViewById(R.id.button1);
        webView = (WebView) findViewById(R.id.page1);
        webView.loadUrl("file:///android_asset/try.html");

        switchB.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent mIntent = new Intent (MainActivity.this, SwitchedView.class);
                mIntent.putExtra("scroll", calculateProgression(webView));
                startActivity(mIntent);             
            }
        });
    }

private float calculateProgression(WebView content) {
        float positionTopView = content.getTop();
        float contentHeight = content.getContentHeight();
        float currentScrollPosition = content.getScrollY();
        float percentWebview = (currentScrollPosition - positionTopView) / contentHeight;
        return percentWebview;
    }

これにより、同じページをロードする WebView である次のアクティビティに Scroll を渡します。

        Intent i = getIntent();
        Bundle extras = i.getExtras();
        float scrollp = extras.getFloat("scroll");

        WebView webView = (WebView) findViewById(R.id.page2);
        webView.loadUrl("file:///android_asset/try2.html");

        float webviewsize = webView.getContentHeight() - webView.getTop();
        float positionInWV = webviewsize * scrollp;
        int positionY = Math.round(webView.getTop() + positionInWV);
        webView.scrollTo(0, positionY);

これは、スクロール位置を渡されたスクロール位置に設定していません。私は何か間違ったことをしていますか?

4

1 に答える 1