2011-09-23 38 views
1

我正嘗試將web視圖加載到對話框中。我正在使用以下代碼。如何在android中的diaoge中加載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(); 
     } 
    }); 

我想打開一個文本視圖上點擊的網頁視圖。當我點擊文本視圖對話框打開沒有webview。任何人都可以幫助我解決這個問題。

在此先感謝。

回答

5

使用包含Web視圖的XML佈局。 然後調用dialog.setContentView(R.layout.web_dialog)

之後設置web視圖像這樣: web視圖WV =(web視圖)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(); 
     } 
    }); 
+0

嗨blou,感謝您的快速響應。我仍然遇到同樣的問題。你認爲網頁瀏覽工作需要什麼嗎?我已經爲清單中的互聯網添加了許可。 – user519846

+0

我犯了錯誤的代碼findViewByID應該是dialog.findViewById –

+0

使用Android Studio 1.5不能使用此方法,它表示'錯誤:Android-XML:將放在使用wrap_content大小的父元素可能會導致微妙的錯誤;使用match_parent' – Choletski

-1

我建議使用webview佈局創建一個活動,並添加任何其他內容。

而當你在Android清單中註冊時,使用這個tage。

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

爲什麼這樣投下來?請在評論中註明或不要低估它! –

+0

我也推薦這個答案 –

1
@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);

+0

謝謝安迪,謝謝你的迴應。讓我試試它。 – user519846

1

設置的WebView高度和寬度,它會工作。