如何在android中的对话框中加载webview

Posted

技术标签:

【中文标题】如何在android中的对话框中加载webview【英文标题】:How to load web view in dialoge in android 【发布时间】:2011-11-23 13:30:05 【问题描述】:

我正在尝试将 Web 视图加载到对话框中。我正在使用以下代码。

    final TextView seeMonthlyBill = (TextView) parentLayout
            .findViewById(R.id.my_ac_my_service_timewarnercable_link);
    seeMonthlyBill.setOnClickListener(new OnClickListener() 
        @Override
        public void onClick(View v) 
            Dialog dialog = new Dialog(getActivity());
            WebView wb = new WebView(getActivity());
            wb.getSettings().setjavascriptEnabled(true);
            wb.loadUrl("http://www.google.com");
            wb.setWebViewClient(new HelloWebViewClient());
            dialog.setCancelable(true);
            dialog.setContentView(wb);
            dialog.setTitle("WebView");
            dialog.show();
        
    );

我想在单击文本视图时打开 Web 视图。当我单击文本视图对话框时,打开时没有 web 视图。有谁能帮我解决这个问题。

提前致谢。

【问题讨论】:

【参考方案1】:

使用包含 Webview 的 XML 布局。 然后调用 dialog.setContentView(R.layout.web_dialog)

之后像这样设置 webview: WebView wv = (WebView) findViewById(R.id.webview); “R.id.webview”是 XML 布局文件中的 ID。

对话框布局示例:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
>
    <WebView
        android:id="@+id/webview"
        android:scrollbars="vertical"
        android:scrollbarAlwaysDrawVerticalTrack="true"
        android:layout_
        android:layout_
        android:layout_centerInParent="true" />
</LinearLayout>

您的代码已修改:

final TextView seeMonthlyBill = (TextView) parentLayout
            .findViewById(R.id.my_ac_my_service_timewarnercable_link);
    seeMonthlyBill.setOnClickListener(new OnClickListener() 
        @Override
        public void onClick(View v) 
            Dialog dialog = new Dialog(getActivity());
            dialog.setContentView(R.layout.web_dialog)
            WebView wb = (WebView) dialog.findViewById(R.id.webview);
            wb.getSettings().setJavaScriptEnabled(true);
            wb.loadUrl("http://www.google.com");
            wb.setWebViewClient(new HelloWebViewClient());
            dialog.setCancelable(true);
            dialog.setTitle("WebView");
            dialog.show();
        
    );

【讨论】:

您好 blou,感谢您的快速响应。我仍然遇到同样的问题。您认为 Web 视图正常工作还需要什么其他条件。我在清单中添加了互联网权限。 我弄错了代码 findViewByID 应该是 dialog.findViewById Using Android Studio 1.5 CANNOT use this method, it says 'Error: Android-XML:Placeing a in a parent element that uses a wrap_content size can lead to细微的错误;使用 match_parent'【参考方案2】:
@Override

        protected Dialog onCreateDialog(int id) 

            // TODO Auto-generated method stub
                Dialog dialog = new Dialog(yourActivity.this);
                dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
                setDialogView(dialog,id);
                return dialog;
            return super.onCreateDialog(id);

        


    private void setDialogView(final Dialog dialog,final int id) 

        // TODO Auto-generated method stub

        dialog.setContentView(R.layout.layoutContainingWebview);
        final WebView mWebView = (WebView)dialog.findViewById(R.id.WebviewId);
        mWebView.getSettings().setBuiltInZoomControls(true);
        mWebView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
        mWebView.setBackgroundColor(Color.TRANSPARENT);
        mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_INSET);
        mWebView.loadUrl("url");
        mWebView.setWebViewClient(new MyWebViewClient());
        dialog.setTitle("Feedback");  // for Feedback           
    


    private class MyWebViewClient extends WebViewClient  

        @Override 
        //show the web page in webview but not in web browser
        public boolean shouldOverrideUrlLoading(WebView view, String url)  
            view.loadUrl (url); 
            return true;
         

显示调用showDialog(1);

【讨论】:

感谢安迪,感谢您的快速回复。让我试试看。【参考方案3】:

设置 webview 的高度和宽度,它会工作。

【讨论】:

【参考方案4】:

我建议创建一个带有 webview 布局的活动以及您想要添加到其中的任何其他内容。

当你在 android manifest 中注册它时使用这个标签。

<activity android:theme="@android:style/Theme.Dialog">

【讨论】:

为什么会被否决?请在 cmets 中说明或根本不要投反对票! 我也推荐这个答案

以上是关于如何在android中的对话框中加载webview的主要内容,如果未能解决你的问题,请参考以下文章

WebView在android中加载缓慢?

如何使用 Android Kotlin 在 WebView 中加载 URL?

Android:如何在 WebView 中加载 html 字符串?

如何在android 7中加载html之前在webview中注入javascript脚本

取消在 Android 上的 WebView 中加载

如何在 Android Webview 中加载网页之前注入 javascript?