2016-10-27 4 views
2

В моем приложении у меня есть веб-просмотр, который загружает веб-страницу, где пользователь должен выполнить аутентификацию. Когда пользователь выбирает некоторые поля ввода на веб-странице, то WebView должен:Android: веб-просмотр не достаточно прокручивается при открытии клавиатуры

  1. фокус на поле
  2. открыть клавиатуру
  3. выполнить прокрутку вверх для того, чтобы пользователь, чтобы сохранить видя поле

Однако веб-просмотр не прокручивается автоматически, поэтому пользователь больше не видит это поле. Если пользователь пытается вручную прокручивать, веб-просмотр делает только небольшой прокрутки - недостаточно для того, чтобы пользователь мог видеть все, что ему нужно. Проблема не в самой веб-странице, так как, когда я просматриваю эту веб-страницу с помощью андроида хром, она прокручивается вверх, чтобы сохранить поле в поле зрения и позволяет прокручивать до нижней части страницы. Я прочитал следующие вопросы: WebView doesn't scroll when keyboard opened и adjustPan not preventing keyboard from covering EditText , но ответы не исправили проблему.

Мой текущий activity_web_viewlogin.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/portalWebViewWrapper" 
    android:orientation="vertical" 
    tools:context="com.hpe.sb.mobile.app.features.login.activities.WebViewLoginActivity"> 
    <include 
     android:id="@+id/app_bar" 
     layout="@layout/app_bar" /> 

    <ScrollView android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fillViewport="true"> 

     <WebView 
      android:id="@+id/portalWebView" 
      android:layout_below="@id/app_bar" 
      android:layout_width="match_parent" 
      android:layout_margin="@dimen/activity_vertical_margin" 
      android:layout_height="match_parent" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentStart="true" /> 

    </ScrollView> 
</LinearLayout> 

Пробовал также, что ScrollView содержит LinearLayout.

В моей AndroidManifest.xml:

 <activity 
      android:name=".features.login.activities.WebViewLoginActivity" 
      android:windowSoftInputMode="adjustResize" 
      android:label="" /> 

Пробовал также adjustPan вместо adjustResize.

Заранее благодарен!

ответ

2

Благодаря другу, теперь у меня есть решение.

В AndroidManifest.xml:

<activity 
      android:name=".features.login.activities.WebViewLoginActivity" 
      android:label="" 
      android:windowSoftInputMode="adjustResize" 
      android:theme="@style/webview"/> 

В styles.xml:

<style name="webview" parent="AppTheme.NoActionBar"> 
     <item name="windowNoTitle">true</item> 
     <item name="windowActionBar">false</item> 
     <item name="android:windowNoTitle">true</item> 
     <item name="android:windowActionBar">false</item> 
     <item name="android:windowFullscreen">false</item> 
    </style> 

Это activity_web_viewlogin.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 

    android:id="@+id/portalWebViewWrapper" 
    tools:context="com.hpe.sb.mobile.app.features.login.activities.WebViewLoginActivity"> 
    <include 
     android:id="@+id/app_bar" 
     layout="@layout/app_bar" /> 
    <WebView 
     android:id="@+id/portalWebView" 
     android:layout_below="@id/app_bar" 
     android:layout_width="match_parent" 
     android:layout_margin="@dimen/activity_vertical_margin" 
     android:layout_height="match_parent" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

</RelativeLayout> 

Ничего особенного в макете деятельности. Он работает без ScrollView, как объяснил @ramji. Я считаю, что он также будет работать с LinearLayout вместо RelativeLayout, для меня это не имеет значения.

+0

Работает из-за false заявление? – Ayyappa

0

Webview уже поставляется с прокруткой без необходимости использования внутри Scrollview Заменить код:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/portalWebViewWrapper" 
    android:orientation="vertical" 
tools:context="com.hpe.sb.mobile.app.features.login.activities.WebViewLoginActivity"> 
    <include 
     android:id="@+id/app_bar" 
     layout="@layout/app_bar" /> 

     <WebView 
      android:id="@+id/portalWebView" 
      android:layout_below="@id/app_bar" 
      android:layout_width="match_parent" 
      android:layout_margin="@dimen/activity_vertical_margin" 
      android:layout_height="match_parent"/> 

</LinearLayout> 
+0

Пробовал это тоже, не работал:/ –

Смежные вопросы