これについて別の SO の質問を見たことがありますが、解決されませんでした。
アプリケーションで生成されたhtmlでLoadData()を使用しています。
新しいテキストの後に数行の空白行を追加すると、ページがスクロールし、テキストが魔法のように表示されるまで少し時間がかかることに気付きました (スクロールせず、フェードインのように表示されます)。
.getContentHeight() を監視すると、onPageFinshed() イベントでは更新されませんが、その後ページにテキストが追加されると更新されます。
getContentHeight を監視するタイマー イベントを作成しました。getContentHeight が変更され、 browser.pageDown(true) を発行した後でさえ、ページはまだ下にスクロールしていました。
初めてアクティビティに入ったときは問題なく動作しているようです。私の問題は、newInnerHTML に数行を追加した場合にのみ発生します。
さらに、関連するビューにはヘッダーとフッターがあり、ブラウザが中央にあります。webView はフッターの背後にはありません。
これはバグですか、それとも何か不足していますか?
ティア、ジム
このコードは、アクティビティの onCreate 内にあります。
final WebView browser = (WebView) findViewById(R.id.webview);
browser.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(browser, url);
// browser.computeScroll(); //didn't help
Log.d(TAG,"page getContentHeight: " + browser.getContentHeight());
Log.d(TAG,"page finished");
browser.pageDown(true);
}
});
このメソッドは、アクティビティの onCreate の後にあります
プライベート ボイド UpdateMessageDisplay() {
//loadData fires onPageFinished but without the new data
browser.loadData("<html><body>" + newInnerHTML + "</body></html>", "text/html", "utf-8");
//reload() again fires onPageFinished but this time with new data
browser.reload();
}