Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android window doesn't resize/pan when softinput opened from WebView

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.

like image 859
Niko Avatar asked Dec 05 '13 12:12

Niko


4 Answers

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.

like image 89
Niko Avatar answered Oct 23 '22 11:10

Niko


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

like image 4
Zubair Ahmed Avatar answered Oct 23 '22 11:10

Zubair Ahmed


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!

like image 2
Ayyappa Avatar answered Oct 23 '22 12:10

Ayyappa


my code was also not able to resize when keyboard opens.

<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/simple_webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scrollbars="none"
    />

i removed (android:scrollbars="none") statement, and it worked ! So that means the app resizes itself only when the container is scrollable. so by default webview containers scrollable area internally.

like image 1
shivam sharma Avatar answered Oct 23 '22 12:10

shivam sharma