Android window doesn't resize/pan when softinp

2020-08-09 06:07发布

问题:

My problem is following.

  1. Application uses theme android:Theme.NoTitleBar.Fullscreen and there is only one Activity, all other views are Fragment
  2. I have WebView inside ViewPager Fragment which is inside ScrollView
  3. HTML content has input fields
  4. I click input field which is on bottom of WebView
  5. Soft input opens, but the Window is not resized/panned

I've tried setting android:windowSoftInputMode="adjustResize" or android:windowSoftInputMode="adjustPan" in my manifest for the Activity. Also tried setting one of those in java.

Normal EditText inside a ScrollView in my application does adjust pan properly so user can see where he/she is typing.

UPDATE:

If there is no working solution to get window adjust, is there a way to get WebView think it's content is like half screen height more bigger so user could at least scroll the input visible.

回答1:

Okay so this has been an issue from the very beginning and Google hasn't fixed it yet, maybe never. But from the the issue: http://code.google.com/p/android/issues/detail?id=5497 I found potential workaround for this: https://stackoverflow.com/a/19494006/1241783

I have overridden WebView and I simply added the code for it and it is working well enough to get the window adjusted. It is possible though the code doesn't always work because of various screen heights and might need some adjustments, but in many cases it is working okay and I go with that, since it's the only working solution I have seen.



回答2:

Try this android:isScrollContainer="false" in the ScrollView. According to the Android docx.

Set this if the view will serve as a scrolling container, meaning that it can be resized to shrink its overall window so that there will be space for an input method

Hope this will solve your problem



回答3:

Here is what we have done to make it work. As it is by design, FLAG_FULLSCREEN activity won't allow adjusting the views when a keyboard is visible, we took an approach with custom Keyboard Notification Listener and OnTouch listener of Webview.

KeyboardHelper.java - to find out the keyboard visibility

Webview Full-Screen Activity Adjustment - To adjust the webview based on the notification and touch point.

Hope it helps!