以编程方式将 Webview 设置为最小尺寸

问题描述 投票:0回答:1

[Android,Java] 我有一个带有取消按钮(关闭警报对话框)的警报对话框以及一个网络视图。我正在尝试设置 webview,使其与父级相匹配,因为每当我打开没有特定设置大小的网页时,它都会缩小到可能的最小高度。我尝试设置 webview 的参数布局以及最小高度,但无济于事。我的代码:

AlertDialog.Builder alert = new AlertDialog.Builder(this);
        alert.setTitle("Age Verification");

        DisplayMetrics displaymetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
        int webViewHeight = (int) Math.round(0.8 * displaymetrics.heightPixels);
        int webViewWidth = (int) Math.round(0.7 * displaymetrics.widthPixels);
        Log.d("Intended min size: ", webViewHeight + ", " + webViewWidth);

        WebView wv = new WebView(this);
        wv.loadUrl({redacted});
        wv.getSettings().setJavaScriptEnabled(true);
        wv.setVerticalScrollBarEnabled(true);
        wv.setHorizontalScrollBarEnabled(true);
        wv.setMinimumHeight(webViewHeight);
        wv.setMinimumWidth(webViewWidth);
        wv.getSettings().setLoadWithOverviewMode(true);
        wv.getSettings().setUseWideViewPort(true);
        wv.setWebChromeClient(new WebChromeClient() {

            @Override
            public void onPermissionRequest(final PermissionRequest request) {
                request.grant(request.getResources());
            }
        });
        wv.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest url) {
                view.loadUrl(url.getUrl().toString());
                if(url.getUrl().toString().contains("/close")){
                    finish();
                }
                return true;
            }
        });

        wv.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

        alert.setView(wv);
        alert.setNegativeButton("Close (Will void transaction if verification incomplete)", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int id) {
                startTransactionFailureDialog(VERIFICATION_FAILED);
                dialog.dismiss();
            }
        });
        AlertDialog result = alert.show();

        Window window = result.getWindow();
        window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

警报对话框填满了屏幕,但只是没有填满某些网站上的网络视图(我试图强制它填满警报对话框,即使该网站占用的空间更少)

现在的样子:

java android webview dialog android-alertdialog
1个回答
0
投票

试试这个以获得 WebView 的最大尺寸:

webView.setLayoutParams(new RelativeLayout.LayoutParams(800, 600));
© www.soinside.com 2019 - 2024. All rights reserved.