web-dev-qa-db-fra.com

android: webview dans le dialogue ou popup

comment ajouter une vue Web dans une boîte de dialogue ou une fenêtre contextuelle.

ma vue Web contient l'URL WebView.loadurl () .Quand la vue est ajoutée dans la boîte de dialogue, elle est toujours déplacée vers le navigateur.

Je suis dans Android chargement de la vue Web dans la boîte de dialogue Mais n’existe-t-il pas un exemple de la façon de procéder?

43
roy.d

Voici un exemple:

AlertDialog.Builder alert = new AlertDialog.Builder(this); 
alert.setTitle("Title here");

WebView wv = new WebView(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();
115
Dmytro Danylyk

Vous devez remplacer setWebViewClient () ..

mWebView = (WebView) view.findViewById(R.id.wv1);
mWebView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return false;
    }
});
mWebView.loadUrl(mUrl);
4
Rajdeep Dua

Si vous essayez d'afficher une vue Web dans une fenêtre contextuelle, vous devez définir la largeur et la hauteur de votre présentation linéaire dans le fichier de présentation de votre fenêtre contextuelle (popup_layout.xml), comme indiqué ci-dessous. 

Vous devez le faire parce que la disposition de popup n'a pas de parent à référencer pour la taille lorsque vous essayez d'utiliser 'match_parent' ou autre.

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout Android:layout_width="400dp"
Android:layout_height="400dp"
Android:background="#FAFAFA"
Android:id="@+id/popup_layout"
Android:orientation="vertical"
xmlns:Android="http://schemas.Android.com/apk/res/Android">

<TextView
    Android:id="@+id/txtclose"
    Android:layout_width="30dp"
    Android:layout_height="30dp"
    Android:layout_gravity="end"
    Android:background="@color/colorPrimaryDark"
    Android:text="X"
    Android:textColor="@color/main_yellow"
    Android:textStyle="bold" />

<WebView
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:id="@+id/externalUrl"/>
</LinearLayout>
1
Apoorv Jain

Code PopupWindow:

@Override
public void onWindowFocusChanged(boolean hasFocus)
{
    try 
    { 
        int[] location = new int[2]; 

        (xml item where you want it to appear).getLocationOnScreen(location);
        //Get x and y positions
        p = new Point();
        p.x = location[0];
        p.y = location[1];
    } 
    catch (Exception e) 
    {
        e.printStackTrace();
    }
}
private void popTab(final Activity myActivity) 
{
    popupWidth = 350;
    popupHeight = 600;

    popup.setWidth(popupWidth);
    popup.setHeight(popupHeight);

    // Inflate the popup_layout.xml
    LinearLayout viewGroup = (LinearLayout) myActivity.findViewById(R.id.myMainLayoutID);
    LayoutInflater layoutInflater = (LayoutInflater) myActivity
                                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View layoutTab = layoutInflater.inflate(R.layout.mylayout, viewGroup);

    //Get webview from xml
    WebView wv = (WebView)layoutTab.findViewById(R.id.webView2);

    // Creating the PopupWindow
    final PopupWindow popup = new PopupWindow(layoutTab);
        //Set to view
    popup.setContentView(layoutTab);

        //Setup webview
    wv.loadUrl("http:\\www.google.com");
    wv.setWebViewClient(new WebViewClient()
    {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url)
        {
            view.loadUrl(url);

            return true;
        }
    });

    //Add some animation from style folder
    popup.update();
    popup.setAnimationStyle(R.style.Animation);
    popup.setFocusable(true);

    popup.showAtLocation(layoutTab, Gravity.NO_GRAVITY, p.x, p.y);
}

Utilisez popTab () où vous le souhaitez. J'espère que cela aide avec la fenêtre popup.

0
abotrix