汉堡包菜单在 Android WebView 中不起作用

Hamburger Menu not working in Android WebView

我在使用 Andriod WebView 时遇到了一个奇怪的问题。我网站的 Humberger 菜单在我的移动浏览器中可以正常展开和关闭,但在我的 Android WebView 应用程序中单击菜单时它不起作用(没有完全展开以显示菜单项)。

我已经从 Whosebug 上的各种答案中尝试了以下代码行:

        webView.getSettings().setDomStorageEnabled(true);
        webView.getSettings().setJavaScriptEnabled(true);
        settings.setJavaScriptEnabled(true);
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setUseWideViewPort(true);

移动浏览器正常工作:

Android WebView 应用程序无法正常工作

这是我的 Andriod WebView 应用程序代码:

package com.app.pvm;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;

public class MainActivity extends AppCompatActivity {

    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webView = findViewById(R.id.MyWebView);

        webView.setWebChromeClient(new MyChromeClient());
        webView.setWebViewClient(new BrowserClient());

        WebSettings settings = webView.getSettings();
        webView.getSettings().setDomStorageEnabled(true);
        webView.getSettings().setJavaScriptEnabled(true);
        settings.setJavaScriptEnabled(true);
        settings.setAllowFileAccess(true);

        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setUseWideViewPort(true);

        webView.loadUrl("https://test.app");
    }
}

XML代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <WebView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/MyWebView"/>
</LinearLayout>

BrowserClientClass代码:

package com.app.pvm;

import android.graphics.Bitmap;
import android.webkit.WebResourceError;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;

class BrowserClient extends WebViewClient {

    public BrowserClient(){

    }

    @Override
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
        super.onReceivedError(view, request, error);
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
    }


}

注意:我正在为 WebView 应用程序使用 Andriod Studio。

你的 WebView 应该适合整个 window,使用 match_parent

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

wrap_content 设置高度使内部下拉菜单测量错误,与此同时整个网页内容拉伸 WebView 到其父级(LinearLayout)的大小并变得可滚动