Webview in programmatically created RelativeLayout

23,783

You should post any exception you get in your question. See if this helps:

    RelativeLayout popwindow=new RelativeLayout(this);
    FrameLayout.LayoutParams rl= new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, 50);
    popwindow.setLayoutParams(rl);
    WebView w= new WebView(this);
    w.setId(0X100);
    w.setScrollContainer(false);
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, 50);
    params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    w.setLayoutParams(params);
    Button b=new Button(this);
    b.setId(0X101);
    b.setText("X");
    b.setBackgroundColor(Color.TRANSPARENT);
    RelativeLayout.LayoutParams bparams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, ReloativeLayout.LayoutParams.WRAP_CONTENT);
    bparams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
    bparams.addRule(RelativeLayout.ALIGN_TOP, w.getId());
    b.setLayoutParams(bparams);        
    popwindow.addView(w);
    popwindow.addView(b);
    setContentView(popwindow);

Custom component holding the WebView and the Button:

public class CustomRelativeLayout extends RelativeLayout {

        private WebView mWebView;
        private Button mButton;

        public CustomRelativeLayout(Context context) {
            super(context);
            mWebView = new WebView(context);
            mWebView.setId(0X100);
            mWebView.setScrollContainer(false);
            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                    RelativeLayout.LayoutParams.FILL_PARENT, 50);
            params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
            mWebView.setLayoutParams(params);
            mButton = new Button(context);
            mButton.setId(0X101);
            mButton.setText("X");
            mButton.setBackgroundColor(Color.TRANSPARENT);
            RelativeLayout.LayoutParams bparams = new RelativeLayout.LayoutParams(
                    RelativeLayout.LayoutParams.WRAP_CONTENT,
                    RelativeLayout.LayoutParams.WRAP_CONTENT);
            bparams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
            bparams.addRule(RelativeLayout.ALIGN_TOP, mWebView.getId());
            mButton.setLayoutParams(bparams);
            addView(mWebView);
            addView(mButton);
        }

        public WebView getTheWebView() {
            return mWebView;
        }

        public Button getTheButton() {
            return mButton;
        }

    }

To use that component:

CustomRelativeLayout popWindow = new CustomRelativeLayout(this);
    FrameLayout.LayoutParams rl= new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, 50);
setContentView(popWindow);
// get a reference to the WebView and the Button
WebView w = popWindow.getTheWebView();
Button b = popWindow.getTheButton(); 
Share:
23,783
Shalini
Author by

Shalini

Am a newbie to android. And working as a junior programmer.

Updated on June 28, 2020

Comments

  • Shalini
    Shalini almost 4 years

    I need the following xml to be made in code:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:orientation="vertical" android:gravity="right"
                android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#00000000"
                >
                <android.webkit.WebView android:layout_width="fill_parent"
                android:id="@+id/adview"
                android:scrollbars="none"
                android:layout_height="50dp"
                android:layout_alignParentLeft="true"
                android:layout_alignParentBottom="true"
                ></android.webkit.WebView>
                <Button android:layout_width="wrap_content" android:text="x" android:textColor="#000000" 
                android:layout_height="wrap_content" android:id="@+id/hide_popup_button" android:background="#00000000" 
                android:layout_alignTop="@+id/adview" android:layout_alignParentRight="true"></Button>
    
            </RelativeLayout> 
    

    I use the code below but I get a Force close:

    RelativeLayout popwindow=new RelativeLayout(this);
    
            RelativeLayout.LayoutParams rl= new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, 50);
            popwindow.setLayoutParams(rl);
            WebView w= new WebView(this);
            w.setId(0X100);
            w.setScrollContainer(false);
            android.widget.RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)w.getLayoutParams();
            params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
            Button b=new Button(this);
            b.setId(0X101);
            b.setText("X");
            b.setBackgroundColor(Color.TRANSPARENT);
            b.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
            android.widget.RelativeLayout.LayoutParams paramsbut = (RelativeLayout.LayoutParams)b.getLayoutParams();
            paramsbut.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
            paramsbut.addRule(RelativeLayout.ALIGN_TOP,w.getId() );
            popwindow.addView(w,params);
            popwindow.addView(b,paramsbut);
            setContentView(popwindow);
    

    I need suggestions on how to make that xml layout through java code.

  • Shalini
    Shalini almost 12 years
    is it possible to create it in another class extends layout and refer it in our main class
  • user
    user almost 12 years
    @Shalini Do you want to create a custom component that will hold your WebView + button and then use that component in your activity?
  • Shalini
    Shalini almost 12 years
    yes. i use the above code in another class extends that layout and use button and webview in mainclass
  • Shalini
    Shalini almost 12 years
    Thanks for spending me your time. i will try it now :)
  • Shalini
    Shalini almost 12 years
    I get the button and webview through your code. But now how can i get the whole layout and refer it in main class. ex:TransparentPanel tp=(TransparentPanel) findViewById(thatlayourhere?);
  • user
    user almost 12 years
    @Shalini Place the custom component in your layout like this <com.your.package.CustomRelativeLayout android:id="@+id/the_id" //other attributes /> and then reference it in code with findViewById.
  • Shalini
    Shalini almost 12 years
  • Anuj Zunjarrao
    Anuj Zunjarrao about 8 years
    how to close CustomRelativeLayout when click on X button
  • Amitsharma
    Amitsharma about 8 years
    how to set radious in webview. programaticaley