2017-02-08 14 views
0

私のアンドロイドアプリケーションでPopupWindowでWebビューを追加したいと思います。これはアラートダイアログのためだけに機能しています。 そして、これは私のコードです:androidのpopupwindowでwebviewを開くには?

AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this); 
      alert.setTitle("Google"); 
      WebView wv = new WebView(MainActivity.this); 
      wv.loadUrl("http:\\www.google.com"); 
      wv.setWebViewClient(new WebViewClient() { 
       @Override 
       public boolean shouldOverrideUrlLoading(WebView view, String url) { 
        view.loadUrl(url); 

        return true; 
       } 
      }); 

      alert.setView(wv); 
      alert.setNegativeButton("Close", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int id) { 
        dialog.dismiss(); 
       } 
      }); 
      alert.show(); 
     } 

しかし、私はポップアップウィンドウでこれをやりたいです。

+1

あなたが試したことと直面している問題を教えてください –

+0

これまでに試したことはありますか? –

+0

上記のコードを参照してください。私は警告ダイアログまたはポップアップウィンドウのいずれかでwebviewでurlを開きたいが、これまでこれを行うことはできない。私は初心者です。ご案内ください。 –

答えて

0
textView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MainActivity.this); 
      LayoutInflater inflater = MainActivity.this.getLayoutInflater(); 
      final View dialogView = inflater.inflate(R.layout.main, null); 
      WebView wv = (WebView) dialogView.findViewById(R.id.web); 
      wv.loadUrl("https://www.google.com"); 
      wv.setWebViewClient(new WebViewClient() { 
       @Override 
       public boolean shouldOverrideUrlLoading(WebView view, String url) { 
        view.loadUrl(url); 

        return true; 
       } 
      }); 

      dialogBuilder.setView(dialogView); 
      Dialog markerPopUpDialog = dialogBuilder.create(); 
      markerPopUpDialog.show(); 
     } 
    }); 

、これはあなたがまた、アクティビティを使用してこれを行うことができます

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent"> 
<WebView 
    android:id="@+id/web" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

</WebView> 

+0

ありがとうございますが、これは私が望むものではありません。私は、URLがロードされるまで表示されているこの小さなウィンドウなしで、URLに直接リダイレクトしたい。 –

+0

@SilviGuptaあなたのコードは正しいです。だから問題は何ですか? – Piyush

+0

ダイアログにタイトルと閉じるボタンが表示されていますが、URLを読み込めません。 –

0

をlayout.mainています。まず、あなたは....コードの下にjavaファイル内のWebビューの活動および設定レイアウトの幅と高さを確認する必要があり、このため

DisplayMetrics dm = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(dm); 

    int width = dm.widthPixels; 
    int height = dm.heightPixels; 

    getWindow().setLayout((int) (width*0.9),(int)(height*0.8)); 

とAndroidマニフェストファイルを選択したテーマ「@スタイル/ AppTheme.CustomThemeForWebViewPOPUp」で

アクティビティおよびスタイルファイルでこのコードを入力してください....

<style name="AppTheme.CustomThemeForWebViewPOPUp"> 
    <item name="android:windowIsTranslucent">true</item> 
    <item name="android:windowCloseOnTouchOutside">true</item> 
    <item name="android:windowBackground">@drawable/popup_activity_design</item> 
    <item name="android:backgroundDimEnabled">true</item> 
</style> 
0

アラートダイアログをカスタム表示でカスタマイズする必要があります。

1つのXMLファイルを作成します:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical"> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1"> 

    <WebView 
     android:id="@+id/webview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_centerInParent="true"> 
    </WebView> 

    <ProgressBar 
     android:id="@+id/prg" 
     android:layout_width="25dp" 
     android:layout_height="25dp" 
     android:layout_centerInParent="true" /> 

</RelativeLayout> 

<Button 
    android:id="@+id/button3" 
    style="@android:style/Widget.Holo.Button.Borderless" 
    android:layout_width="wrap_content" 
    android:textColor="#000000" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center|right" 
    android:text="Close" /> 

</LinearLayout> 

今javaファイル内のコードを実装:

final AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this); 
    alert.setTitle("Google"); 
    View view = getLayoutInflater().inflate(R.layout.file_name, null); 
    alert.setView(view); 

    WebView wv = (WebView) view.findViewById(R.id.webview); 
    pb = (ProgressBar) view.findViewById(R.id.prg); 
    Button btnClose = (Button) view.findViewById(R.id.button3); 
    pb.setVisibility(View.VISIBLE); 

    btnClose.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      alertDialog.dismiss(); 
     } 
    }); 
    wv.setWebViewClient(new MyWebViewClient()); 
    wv.loadUrl("http://www.google.com"); 

    alertDialog = alert.create(); 
    alertDialog.show(); 
    WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); 
    lp.copyFrom(alertDialog.getWindow().getAttributes()); 
    lp.width = WindowManager.LayoutParams.MATCH_PARENT; 
    lp.height = WindowManager.LayoutParams.MATCH_PARENT; 
    alertDialog.getWindow().setAttributes(lp); 

またカスタムWebViewClient

class MyWebViewClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 

     if (pb.getVisibility() == View.GONE) { 
      pb.setVisibility(View.VISIBLE); 
     } 

     return true; 
    } 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     System.out.println("on finish"); 
     if (pb.getVisibility() == View.VISIBLE) { 
      pb.setVisibility(View.GONE); 
     } 
    } 
} 

は注意します: D alertDialogオブジェクトをグローバルとして表示します。

0

最後に、私はそれをしました。誰かがこれを行う必要があるなら、私のコードはここにあります。

  AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this); 
      alert.setTitle("Terms and conditions"); 
      View view= LayoutInflater.from(MainActivity.this).inflate(R.layout.layout_termsdialog,null); 
      WebView wv = (WebView) view.findViewById(R.id.web); 
      progressbarterms= (ProgressBar) view.findViewById(R.id.progressbarterms); 
      wv.loadUrl("my url"); 
      WebSettings webSettings = wv.getSettings(); 
      webSettings.setJavaScriptEnabled(true); 
      wv.setWebViewClient(new TermsClient()); 
      alert.setView(view); 
      alert.setNegativeButton("Close", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int id) { 
        dialog.dismiss(); 
       } 
      }); 
      alert.show(); 
     } 
class TermsClient extends WebViewClient 
{ 
    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     // TODO Auto-generated method stub 
     super.onPageStarted(view, url, favicon); 
    } 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     // TODO Auto-generated method stub 
        progressbarterms.setVisibility(View.VISIBLE); 
     view.loadUrl(url); 
     return true; 

    } 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     // TODO Auto-generated method stub 
     super.onPageFinished(view, url); 

        progressbarterms.setVisibility(View.GONE); 
    } 
} 

レイアウトファイルには、webviewとprogressbarが含まれています。

+0

進捗バーで回答を掲載しました。それも正しかった。あなたはそれを使うことができます! – Piyush

関連する問題