web-dev-qa-db-ja.com

Android WebViewからソフト入力を開いたときにウィンドウがサイズ変更/パンされない

私の問題は次のとおりです。

  1. アプリケーションはテーマ_Android:Theme.NoTitleBar.Fullscreen_を使用しており、Activityは1つしかありません。他のすべてのビューはFragmentです
  2. WebView内に_ViewPager Fragment_内にScrollViewがあります
  3. HTMLコンテンツには入力フィールドがあります
  4. WebViewの下部にある入力フィールドをクリックします
  5. ソフト入力は開きますが、Windowはサイズ変更/パンされません

Activityのマニフェストで_Android:windowSoftInputMode="adjustResize"_または_Android:windowSoftInputMode="adjustPan"_を設定してみました。それらの1つをJavaで設定することも試みました。

アプリケーションのEditText内の通常のScrollViewはパンを適切に調整して、ユーザーがどこに入力しているかを確認できるようにします。

更新:

ウィンドウを調整するための実用的な解決策がない場合、ユーザーが少なくとも入力をスクロールして表示できるように、コンテンツが画面の半分の高さのように大きいとWebViewに思わせる方法はありますか。

22
Niko

さて、これは最初から問題であり、Googleはまだ修正していません。おそらく決して修正していません。しかし、問題から: http://code.google.com/p/Android/issues/detail?id=5497 これに対する潜在的な回避策を見つけました: https:// stackoverflow .com/a/19494006/124178

WebViewをオーバーライドし、そのコードを追加しただけで、ウィンドウを調整するのに十分に機能しています。画面の高さがさまざまであるためにコードが常に機能するとは限らず、調整が必要になる場合もありますが、多くの場合、問題なく機能します。これが私が見た唯一の機能するソリューションであるため、それを使用します。

8
Niko

これを試して Android:isScrollContainer="false" ScrollViewで。 Android docx。

ビューがスクロールコンテナーとして機能する場合は、これを設定します。つまり、ビューのサイズを変更してウィンドウ全体を縮小し、インプットメソッド用のスペースを確保できます。

これがあなたの問題を解決することを願っています

4
Zubair Ahmed

これを機能させるために私たちが行ったことは次のとおりです。仕様によると、FLAG_FULLSCREENアクティビティではキーボードが表示されているときにビューを調整できません。Webviewのカスタムキーボード通知リスナーとOnTouchリスナーを使用するアプローチを採用しました。

KeyboardHelper.Java -キーボードの可視性を確認する

Webviewフルスクリーンアクティビティ調整 -通知とタッチポイントに基づいてWebviewを調整します。

それが役に立てば幸い!

1
Ayyappa