Android:WebView底部的Hidding popup softKeyboard

时间:2017-05-18 03:51:08

标签: android android-studio webview

我正在Android中使用Android Studio开发一个小应用程序。它只是一个连接到URL并以全屏模式显示网页的WebView。我不需要软件键盘,所以我禁用它,但仍然在我的webview底部显示一个弹出键盘(见图)。如果我单击它,弹出窗口会消失,但是当在webview的任何部分中单击时,它会再次出现。它不会在任何情况下显示键盘 - 只是弹出窗口。

我无法修改网址内容。

如何永久禁用此弹出窗口?

Pop up Keyboard

这是我的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="cl.archibaldo.floreantpos">

    <uses-permission android:name="android.permission.INTERNET" />
    <application
        android:theme="@style/AppTheme"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher"
        android:supportsRtl="true"
        >
        <activity
            android:name=".ActivityWebView"
            android:alwaysRetainTaskState="true"
            android:configChanges="keyboardHidden"
            android:screenOrientation="landscape"
            android:windowSoftInputMode="stateAlwaysHidden"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
        </activity>
        <activity android:name=".MainActivity"
            android:screenOrientation="portrait"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

我的activity_webview.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:descendantFocusability="blocksDescendants"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="cl.archibaldo.floreantpos.ActivityWebView">

    <WebView

        android:focusable="false"
        android:focusableInTouchMode="false"
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>
</LinearLayout>

我的ActivityWebView.java

package cl.archibaldo.floreantpos;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.WindowManager;
import android.webkit.WebView;

public class ActivityWebView extends Activity {

    WebView myWebView;
    View decorView;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent intent = getIntent();
        String url = intent.getStringExtra("URL");
        this.setContentView(R.layout.activity_webview);

        hideSystemUI();

        myWebView = (WebView) this.findViewById(R.id.webview);
        myWebView.getSettings().setJavaScriptEnabled(true);
        myWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
        myWebView.setSaveEnabled(true);
        myWebView.getSettings().setLoadWithOverviewMode(true);
        myWebView.getSettings().setUseWideViewPort(true);
        myWebView.loadUrl(url);

        decorView.setOnSystemUiVisibilityChangeListener
                (new View.OnSystemUiVisibilityChangeListener() {
                    @Override
                    public void onSystemUiVisibilityChange(int visibility) {
                        if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
                            Handler espera3segundos = new Handler();
                            espera3segundos.postDelayed(new Runnable(){
                                public void run(){
                                    hideSystemUI();
                                }
                            },3000);
                        }
                    }
                });


    }

    @Override
    protected void onPause() {
        super.onPause();
    }

    private void hideSystemUI() {

        this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
        decorView = this.getWindow().getDecorView();
        decorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
                        | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                        | View.SYSTEM_UI_FLAG_IMMERSIVE);

    }


}

提前致谢并抱歉我的英语。我还在学习。问候。

1 个答案:

答案 0 :(得分:0)

在layout.xml

中的main(父)布局中添加以下代码
android:descendantFocusability="blocksDescendants"

并在网页视图中设置以下属性。

android:focusable="false" 
android:focusableInTouchMode="true"