1

WebViewを使用してコンテンツを表示するAndroidアプリを作成しています。アプリの主な目的は、ユーザーが読むためのテキストを表示することです。

JavaScriptを介してWebViewにHTMLを動的に追加しています。ページの下部にコンテンツを追加する場合、問題はありません。コンテンツを一番上に追加すると、WebViewは自動的に一番上にスクロールします。それが私の問題です。

コンテンツがページの上部に追加されたときに、WebViewがページの上部に自動的にスクロールしないようにする方法を見つける必要があります。

ただし、いくつかの制限があります。

1)JavaScriptを使用していますが、jQueryを使用できません。

2)現在Android API 8(v2.2)に限定されています。

3)元の位置にスクロールバックしたくありません。 (この問題のSOで多くの解決策を見つけました。プログラムでスクロールする前の位置にスクロールバックします。現在実装していますが、十分にスムーズな移行ではありません。)

4)コンテンツが追加されている間、ユーザーが継続的に上にスクロールできるようにする必要があります。(WebViewがスクロールして元に戻らないようにするためにスクロールを無効にする実装を受け入れていますが、コンテンツを画面の高さ程度上に追加している間、ユーザーがスクロールし続けることを許可する必要があります。)

これが制限されているように思われる場合は申し訳ありませんが、なぜ私がアドバイスを必要としたのかがわかります。

よろしくお願いします。

4

1 に答える 1

1

私は自分の問題を回避する方法を見つけました。誰かが別の、特にもっと直接的な答えを持っているなら、私はまだ興味があるでしょう。

私は部分的に、自分の問題を誤診していました。を使用してHTMLを追加する場合 document.body.insertBefore(newDiv, topDiv.nextSibling);、ドキュメントの上端のすぐ下に新しいHTMLを追加します。

画面の一番上(座標[0,0])までスクロールして戻っていると思いましたが、代わりにドキュメントの長さが変更され、現在のY位置は同じままでした。そのため、私が表示していた座標は一定でしたが、それらの座標に表示されるHTMLは変更されました。その効果は、ページを「上にスクロール」することでした。

表示されているテキストの上に巨大な空白を追加することになりました。HTMLを追加するたびに、追加したHTMLの正確な高さだけ縮小します。これにより、追加されたテキストがオフセットされ、表示されている画面をまったく同じに保つことができます。これは、スクロールがないことを意味します。これは、はるかに流動的なUIです。

これにより、ユーザーが空白の全長をスクロールできないようにしたり、WebViewを最大サイズより大きくしないようにするなど、まったく異なる設定を回避できます。ただし、ユーザーエクスペリエンスが大幅に向上するため、トレードオフには十分な価値があります。

于 2012-08-21T16:47:23.287 に答える