53 votes

android: vue Web dans la boîte de dialogue ou la fenêtre contextuelle

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

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

J'ai été dans Android en train de charger la vue Web dans la boîte de dialogue mais n'y a-t-il pas d'exemple de comment le faire? Merci

133voto

Dmytro Danylyk Points 6911

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();

4voto

Rajdeep Dua Points 7911

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

2voto

Apoorv Jain Points 34

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

Vous devez le faire car la mise en page de la fenêtre contextuelle n'a aucun parent auquel se référer pour la taille lorsque vous essayez d'utiliser 'match_parent' ou plus.

 <?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>

0voto

abotrix Points 128

Code de la fenêtre contextuelle :

 @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 voulez. J'espère que cela aide avec la fenêtre contextuelle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X