【问题标题】:How to load web view in dialoge in android如何在android中的对话框中加载webview
【发布时间】: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 视图。有谁能帮我解决这个问题。

提前致谢。

【问题讨论】:

    标签: android android-webview android-dialog


    【解决方案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_width="wrap_content"
        android:layout_height="wrap_content"
    >
        <WebView
            android:id="@+id/webview"
            android:scrollbars="vertical"
            android:scrollbarAlwaysDrawVerticalTrack="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            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 中说明或根本不要投反对票!
      • 我也推荐这个答案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多