打开和关闭键盘会删除我的webview的一部分

时间:2015-07-02 18:25:01

标签: android webview keyboard

当我通过触摸WebView上方工具栏中的edittext打开键盘,并使用后退按钮关闭它时,我的webview的一部分消失了,我的活动背景变得可见(键盘所在的白色区域 - >见代码下面的第二张图片)。造成这种情况的原因是什么?我该如何解决?

当我打开并关闭与webview重叠的抽屉,同时可以看到空白区域时,它会以某种方式再次填充该区域的网页内容。

edittext位于工具栏中(图片上不可见,滚动时隐藏)

 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" 
android:background="#FFFFFF">

<android.support.design.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <android.support.v7.widget.Toolbar
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/toolbar"
            style="@style/toolbarStyle"
            android:layout_width="match_parent"
            android:layout_height="57dp"
            app:layout_scrollFlags="scroll|enterAlways" >

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:paddingBottom="10dp"
                android:paddingTop="10dp" >

                <Button
                    android:id="@+id/tmpBtn"
                    android:layout_width="48dp"
                    android:layout_height="match_parent"
                    android:layout_alignParentRight="true"
                    android:background="#4d8cf3" />

                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_toLeftOf="@id/tmpBtn"
                    android:background="#FFFFFF" />
            </RelativeLayout>
        </android.support.v7.widget.Toolbar>
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        android:fillViewport="true" >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

            <WebView
                android:id="@+id/webView"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />

            <ProgressBar
                android:id="@+id/progressBar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true" />
        </RelativeLayout>
    </android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>

<!-- Nav drawer -->

<fragment
    android:id="@+id/navigation_drawer"
    android:name="com.example.fastbrowser.NavigationDrawerFragment"
    android:layout_width="@dimen/navigation_drawer_width"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:layout_marginTop="57dp"
    tools:layout="@layout/fragment_navigation_drawer" />

keyboard shown

after backbutton pressed: white area (=activity background) where the keyboard was

1 个答案:

答案 0 :(得分:0)

本文为这类问题提供了一个不错的解决方案 - http://www.finalconcept.com.au/article/view/android-keeping-buttons-visible。诀窍是使用ScrollView的重量。