android: webview inside dialog or popup

AndroidAndroid Webview

Android Problem Overview


how to add web view inside dialog or popup window.

my web view hold URL WebView.loadurl() .when view added inside dialog it still moving to the browser.

I've been in https://stackoverflow.com/questions/3411778/android-loading-webview-in-dialog but is no example of how to do it? thanks

Android Solutions


Solution 1 - Android

Here is example:

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

Solution 2 - Android

You need to override 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);

Solution 3 - Android

If you are trying to display a webview in a popup then you must set the width and height of your linear layout in your popup's layout file (popup_layout.xml) as shown below.

You have to do this because popup's layout doesn't have any parent to refer for the size when you try using 'match_parent' or so.

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

Solution 4 - Android

PopupWindow code:

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

Use popTab() where ever you like. Hope this helps with popup window.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionroy.dView Question on Stackoverflow
Solution 1 - AndroidDmytro DanylykView Answer on Stackoverflow
Solution 2 - AndroidRajdeep DuaView Answer on Stackoverflow
Solution 3 - AndroidApoorv JainView Answer on Stackoverflow
Solution 4 - AndroidabotrixView Answer on Stackoverflow