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();
Author by
Shalini
Am a newbie to android. And working as a junior programmer.
Updated on June 28, 2020Comments
-
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 almost 12 yearsis it possible to create it in another class extends layout and refer it in our main class
-
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 almost 12 yearsyes. i use the above code in another class extends that layout and use button and webview in mainclass
-
Shalini almost 12 yearsThanks for spending me your time. i will try it now :)
-
Shalini almost 12 yearsI 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 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 withfindViewById
. -
Shalini almost 12 years
-
Anuj Zunjarrao about 8 yearshow to close CustomRelativeLayout when click on X button
-
Amitsharma about 8 yearshow to set radious in webview. programaticaley