Hello everyone please i need help. I'm a biginner in Android programming so since i was trying to solve this problem it took me all my days that why i want you to help me please. I'm trying to display a Linear layout according to the loop condition but the issue is that when i'm doing that it's just displaying the last one and i'm not able to see others when it's displaying. Here are my codes
ScrollView sv = new ScrollView(this);
sv.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
sv.setPadding(5, 5, 5, 5);
sv.setBackgroundColor(getResources().getColor(R.color.colorWhite));
LinearLayout ll = null;
for (int i=0; i < 2; i++){
try {
//Here iam defining the LinearLayout
ll = new LinearLayout(this);
ll.setId(i);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
ll.setLayoutParams(params);
ll.setOrientation(LinearLayout.VERTICAL);
ll.setBackground(getDrawable(R.drawable.circle_view));
//Here iam defining the RelativeLayout
RelativeLayout Rl = new RelativeLayout(this);
RelativeLayout.LayoutParams param = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
Rl.setLayoutParams(param);
//Defining a layout params for widgets
RelativeLayout.LayoutParams image = new RelativeLayout.LayoutParams(100, 90);
image.addRule(RelativeLayout.ALIGN_LEFT);
//Creating widgets
ImageView im = new ImageView(this);
im.setImageResource(R.mipmap.airtel);
im.setId(R.id.image1);
im.setLayoutParams(image);
//----------------
RelativeLayout.LayoutParams txtone = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
txtone.addRule(RelativeLayout.RIGHT_OF, R.id.image1);
txtone.setMargins(0, 5, 0, 45);
TextView txtVone = new TextView(this);
txtVone.setText("ArkaL"+i);
//txtVone.setTextSize(R.dimen.MainTextSize);
txtVone.setTextSize(15);
txtVone.setTypeface(txtVone.getTypeface(), Typeface.BOLD);
txtVone.setLayoutParams(txtone);
//------------------------------------------------
RelativeLayout.LayoutParams txttwo = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
txttwo.addRule(RelativeLayout.RIGHT_OF, R.id.image1);
txttwo.setMargins(0, 45, 0, 0);
TextView txtVtwo = new TextView(this);
txtVtwo.setText("République Démocratique du Congo");
txtVtwo.setTypeface(txtVtwo.getTypeface(), Typeface.SERIF.getStyle());
txtVtwo.setTextSize(10);
txtVtwo.setLayoutParams(txttwo);
Rl.addView(im);
Rl.addView(txtVone);
Rl.addView(txtVtwo);
RelativeLayout.LayoutParams recycler = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
RecyclerView rv = new RecyclerView(this);
rv.setLayoutParams(recycler);
ll.addView(Rl);
ll.addView(rv);
}catch (Exception e){
}
}
//Here for assigning Linear to ScrollView
sv.addView(ll);
this.setContentView(sv);
Please help me.
your problem is that you created one LinearLayout and changed it in a loop and then added it to a ScrollView so at the end you will have just one LinearLayout. as you may know an ScrollView should have just one View as a child view so you should add a LinearLayout for a ScrollView and add as many LinearLayout as you want to the primary LinearLayout. your code can be like this:
LinearLayout llMain = new LinearLayout(this);
LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
llMain.setLayoutParams(params2);
llMain.setOrientation(LinearLayout.VERTICAL);
sv.addView(llMain);
LinearLayout ll = null;
for (int i = 0; i < 2; i++) {
try {
//Here iam defining the LinearLayout
ll = new LinearLayout(this);
ll.setId(i);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
ll.setLayoutParams(params);
ll.setOrientation(LinearLayout.VERTICAL);
...
llMain.addView(ll);
} catch (Exception e) {
...
note that the Height of primary linearlayour should wrap its content;
Guys I have a cardview and I want to add 2 button on it with rule but addRule() method is not working. In the picture, figure A is occurring but I want to make figure B, I mean, I want the buttons set align_parent_right and align_parent_bottom and the second button adjacent to first one. When I run it, figure A occuring. Any suggestions?
RelativeLayout.LayoutParams rl= (RelativeLayout.LayoutParams) iView.getLayoutParams();
RelativeLayout.LayoutParams lparams = new RelativeLayout.LayoutParams(width/4,height/5);
RelativeLayout.LayoutParams lparams2 = new RelativeLayout.LayoutParams(width/4,height/5);
removeButton=new Button(mContext);
modifyButton=new Button(mContext);
lparams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
lparams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
cardView.setLayoutParams(rl);
cardView.addView(removeButton,lparams);
cardView.addView(modifyButton,lparams2);
Try this:-
RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.mainLayout);
CardView cardView = new CardView(this);
ViewGroup.LayoutParams cardParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
cardView.setLayoutParams(cardParams);
mainLayout.addView(cardView);
RelativeLayout relativeLayout = new RelativeLayout(this);
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
relativeLayout.setLayoutParams(layoutParams);
cardView.addView(relativeLayout);
LinearLayout linearLayout = new LinearLayout(this);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
linearLayout.setLayoutParams(params);
linearLayout.setOrientation(LinearLayout.HORIZONTAL);
linearLayout.setGravity(Gravity.RIGHT);
relativeLayout.addView(linearLayout);
Button removeButton = new Button(this);
Button modifyButton = new Button(this);
removeButton.setText("Remove");
modifyButton.setText("Modify");
linearLayout.addView(removeButton);
linearLayout.addView(modifyButton);
In my android app I need a layout as shown below
A relative layout is used as the parent layout inside I use 4 relative layout to arrange the contents- header layout 1,header layout 2, content layout(objRLScrollView -scroll view is inside this layout) and a footer layout
I use the below code to create the above layout
public class Login1 extends Activity {
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
RelativeLayout objRLBody=new RelativeLayout(this);
objRLBody.setId(1001);
RelativeLayout.LayoutParams objLLBodyParams=new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
objRLBody.setBackgroundColor(Color.parseColor("#d8e4f3"));
objRLBody.setLayoutParams(objLLBodyParams);
/* header portion starts here*/
RelativeLayout objRLActionBar=new RelativeLayout(this);
objRLActionBar.setId(1002);
RelativeLayout.LayoutParams objRLActionBarParams=new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,50);
objRLActionBarParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
objRLActionBar.setLayoutParams(objRLActionBarParams);
objRLActionBar.setBackgroundColor(Color.parseColor("#2e4862"));
objRLBody.addView(objRLActionBar);
RelativeLayout objRLSelectedActionBar=new RelativeLayout(this);
objRLSelectedActionBar.setId(1003);
RelativeLayout.LayoutParams objRLSelectedActionBarParams=new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
objRLSelectedActionBarParams.addRule(RelativeLayout.BELOW,objRLActionBar.getId());
objRLSelectedActionBar.setLayoutParams(objRLSelectedActionBarParams);
objRLSelectedActionBar.setBackgroundColor(Color.WHITE);
objRLSelectedActionBar.setGravity(Gravity.CENTER|Gravity.LEFT);
TextView objTVSelectedAction = new TextView(this);
RelativeLayout.LayoutParams objTVSelectedActionParams=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
objTVSelectedAction.setLayoutParams(objTVSelectedActionParams);
objTVSelectedAction.setGravity(Gravity.CENTER);
objTVSelectedAction.setTextColor(Color.BLACK);
objTVSelectedAction.setTextSize(TypedValue.COMPLEX_UNIT_DIP,18);
objTVSelectedAction.setText("Scroll Test");
objTVSelectedAction.setTypeface(null, Typeface.BOLD);
objTVSelectedAction.setPadding(4, 0, 4, 0);
objTVSelectedAction.setId(1004);
objRLSelectedActionBar.addView(objTVSelectedAction);
objRLBody.addView(objRLSelectedActionBar);
/* header portion ends here*/
/* Relative layout which hold scroll view*/
RelativeLayout objRLScrollView = new RelativeLayout(this);
objRLScrollView.setId(1005);
objRLScrollView.setBackgroundColor(Color.parseColor("#d8e4f3"));
objRLScrollView.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER_HORIZONTAL);
RelativeLayout.LayoutParams objRLScrollViewParams = new RelativeLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
objRLScrollViewParams.addRule(RelativeLayout.BELOW ,objTVSelectedAction.getId());
ScrollView objScrollView=new ScrollView(this);
objScrollView.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
objScrollView.setFillViewport(true);
/* contents */
RelativeLayout objRLContent = new RelativeLayout(this);
objRLContent.setId(1006);
objRLContent.setBackgroundColor(Color.parseColor("#d8e4f3"));
objRLContent.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER_HORIZONTAL);
RelativeLayout.LayoutParams objRLContentParams = new RelativeLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
// objRLContentParams.addRule(RelativeLayout.BELOW ,objTVSelectedAction.getId());
objRLContent.setLayoutParams(objRLContentParams);
/* adding layouts containing Edittext (for testing scroll view) */
RelativeLayout rl2= addEditText(objRLContent,null,1);
RelativeLayout rl3= addEditText(objRLContent,rl2,2);
RelativeLayout rl4= addEditText(objRLContent,rl3,3);
RelativeLayout rl5= addEditText(objRLContent,rl4,4);
RelativeLayout rl6= addEditText(objRLContent,rl5,5);
RelativeLayout rl7= addEditText(objRLContent,rl6,6);
RelativeLayout rl8= addEditText(objRLContent,rl7,7);
RelativeLayout rl9= addEditText(objRLContent,rl8,8);
RelativeLayout rl10= addEditText(objRLContent,rl9,9);
RelativeLayout rl11= addEditText(objRLContent,rl10,10);
RelativeLayout rl12= addEditText(objRLContent,rl11,11);
RelativeLayout rl13= addEditText(objRLContent,rl12,12);
objScrollView.addView(objRLContent); // adding contents to scroll view
objRLScrollView.addView(objScrollView); // Adding scroll view to a relative layout
objRLBody.addView(objRLScrollView); // adding relative layout to body layout
// adding footer to body
RelativeLayout objRLFooter=new RelativeLayout(this);
RelativeLayout.LayoutParams objRLFooterParams=new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,25);
objRLFooterParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM,objRLBody.getId());
objRLFooter.setLayoutParams(objRLFooterParams);
objRLFooter.setBackgroundColor(Color.parseColor("#2e4862"));
objRLFooter.setGravity(Gravity.CENTER);
objRLBody.addView(objRLFooter);
this.setContentView(objRLBody);
}
private RelativeLayout addEditText(RelativeLayout objRLContent,RelativeLayout layoutAbove,int i ) {
RelativeLayout objRLEditText = new RelativeLayout(this);
objRLEditText.setId(1100+i);
RelativeLayout.LayoutParams objRLEditTextParams = new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
if(layoutAbove!=null)
objRLEditTextParams.addRule(RelativeLayout.BELOW,layoutAbove.getId());
objRLEditText.setLayoutParams(objRLEditTextParams);
objRLEditText.setPadding(8, 2, 8, 2);
EditText objETData = new EditText(this);
objETData.setId(1300+i);
RelativeLayout.LayoutParams objETDataParams=new RelativeLayout.LayoutParams(200,LayoutParams.WRAP_CONTENT);
objETData.setLayoutParams(objETDataParams);
objETData.setPadding(8, 0, 8, 0);
objETData.setTextSize(TypedValue.COMPLEX_UNIT_DIP,18);
objETData.setText(""+i);
objETData.setSingleLine(true);
objRLEditText.addView(objETData);
objRLContent.addView(objRLEditText);
return objRLEditText;
}
}
and the above code gives out put as shown below
The header layouts becomes invisible due to the presence of scrollView. What is wrong with my code? what should i do to get a layout with scrollable contents with fixed header and footer? plz help.
1- Set your ScrollView's height and width to match_parent.
2- Set your Scrollview's Top and Bottom padding equal to your top and bottom bar height.
3- Set your top bar's alignment to alignparenttop
4- Set your bottom bar's alignment to alignparentbottom
Note: If you want a good compatibility library for action bars consider using ActionBarSherlock.
Use a LinearLayout instead of a RelativeLayout for your Parent Container. Set the orientation to the LinearLayout to vertical and set a LayoutWeight to 1 for the ScrollView.
Try followin I have edited your code, which working Ok.
public class Scrolling2Activity extends Activity {
int myid = 1000, pos=-1, etpos=-1;
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
RelativeLayout rlBody = new RelativeLayout(this);
rlBody.setId(++myid);
RelativeLayout.LayoutParams bodyParams = new RelativeLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
rlBody.setLayoutParams(bodyParams);
rlBody.setBackgroundColor(Color.BLACK);
// Header-1
RelativeLayout head1 = new RelativeLayout(this);
head1.setId(++myid);
RelativeLayout.LayoutParams head1Params = new RelativeLayout.LayoutParams(
LayoutParams.FILL_PARENT, 25);
head1Params.addRule(RelativeLayout.ALIGN_PARENT_TOP);
head1.setLayoutParams(head1Params);
head1.setBackgroundColor(Color.BLUE);
rlBody.addView(head1, ++pos);
// Header-2
RelativeLayout head2 = new RelativeLayout(this);
head2.setId(++myid);
RelativeLayout.LayoutParams head2Params = new RelativeLayout.LayoutParams(
LayoutParams.FILL_PARENT, 25);
head2Params.addRule(RelativeLayout.BELOW, head1.getId());
head2.setLayoutParams(head2Params);
head2.setBackgroundColor(Color.CYAN);
// TextView in Header-2
TextView tv1 = new TextView(this);
tv1.setId(++myid);
RelativeLayout.LayoutParams tv1Params = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
tv1.setLayoutParams(tv1Params);
tv1.setGravity(Gravity.CENTER);
tv1.setTextColor(Color.BLACK);
tv1.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);
tv1.setText("Scroll Test");
tv1.setTypeface(null, Typeface.BOLD);
tv1.setPadding(4, 0, 4, 0);
//tv1.setBackgroundColor(Color.DKGRAY);
head2.addView(tv1);
rlBody.addView(head2, ++pos);
// RelativeLayout For ScrollView
RelativeLayout scrollHolder = new RelativeLayout(this);
scrollHolder.setId(++myid);
RelativeLayout.LayoutParams scrollHolderParams = new RelativeLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
scrollHolderParams.addRule(RelativeLayout.BELOW, head2.getId());
scrollHolder.setLayoutParams(scrollHolderParams);
scrollHolder.setBackgroundColor(Color.DKGRAY);
scrollHolder.setGravity(Gravity.CENTER_VERTICAL);
// ScrollView
ScrollView scroll = new ScrollView(this);
scroll.setId(++myid);
scroll.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
scroll.setBackgroundColor(Color.GREEN);
// RelativeLayout
RelativeLayout etHolder = new RelativeLayout(this);
etHolder.setId(++myid);
RelativeLayout.LayoutParams etHolderParams = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
etHolder.setLayoutParams(etHolderParams);
etHolder.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
etHolder.setPadding(0, 0, 0, 25);
// Creating EditTextes and Adding to etHolder AS you have done
RelativeLayout rl2 = addEditText(etHolder, null, 1);
RelativeLayout rl3 = addEditText(etHolder, rl2, 2);
RelativeLayout rl4 = addEditText(etHolder, rl3, 3);
RelativeLayout rl5 = addEditText(etHolder, rl4, 4);
RelativeLayout rl6 = addEditText(etHolder, rl5, 5);
RelativeLayout rl7 = addEditText(etHolder, rl6, 6);
RelativeLayout rl8 = addEditText(etHolder, rl7, 7);
RelativeLayout rl9 = addEditText(etHolder, rl8, 8);
RelativeLayout rl10 = addEditText(etHolder, rl9, 9);
RelativeLayout rl11 = addEditText(etHolder, rl10, 10);
RelativeLayout rl12 = addEditText(etHolder, rl11, 11);
RelativeLayout rl13 = addEditText(etHolder, rl12, 12);
scroll.addView(etHolder); // adding RelativeLayout = etHolder to ScrollView = scroll
scrollHolder.addView(scroll); // adding ScrollView = scroll to RelativeLayout = scrollHolder
rlBody.addView(scrollHolder, ++pos);
// RelativeLayout for Footer
RelativeLayout footer = new RelativeLayout(this);
footer.setId(++myid);
RelativeLayout.LayoutParams footerParams = new RelativeLayout.LayoutParams(
LayoutParams.FILL_PARENT, 25);
footerParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
footer.setLayoutParams(footerParams);
footer.setBackgroundColor(Color.MAGENTA);
rlBody.addView(footer, ++pos);
setContentView(rlBody);
}
// Method as you have done
private RelativeLayout addEditText(RelativeLayout objRLContent,
RelativeLayout layoutAbove, int i) {
RelativeLayout objRLEditText = new RelativeLayout(this);
objRLEditText.setId(1100 + i);
RelativeLayout.LayoutParams objRLEditTextParams = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
if (layoutAbove != null)
objRLEditTextParams.addRule(RelativeLayout.BELOW,
layoutAbove.getId());
objRLEditText.setLayoutParams(objRLEditTextParams);
objRLEditText.setPadding(8, 2, 8, 2);
EditText objETData = new EditText(this);
objETData.setId(1300 + i);
RelativeLayout.LayoutParams objETDataParams = new RelativeLayout.LayoutParams(
200, LayoutParams.WRAP_CONTENT);
objETData.setLayoutParams(objETDataParams);
objETData.setPadding(8, 0, 8, 0);
objETData.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);
objETData.setText("" + i);
objETData.setSingleLine(true);
objRLEditText.addView(objETData);
objRLContent.addView(objRLEditText);
return objRLEditText;
}
}
once try this one
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(new BallBounce(this));
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
// this.requestWindowFeature(Window.FEATURE_NO_TITLE);
RelativeLayout objRLBody=new RelativeLayout(this);
objRLBody.setId(1001);
RelativeLayout.LayoutParams objLLBodyParams=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
objRLBody.setBackgroundColor(Color.parseColor("#d8e4f3"));
objRLBody.setLayoutParams(objLLBodyParams);
/* header portion starts here*/
RelativeLayout objRLActionBar=new RelativeLayout(this);
objRLActionBar.setId(1002);
RelativeLayout.LayoutParams objRLActionBarParams=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,50);
objRLActionBarParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
objRLActionBar.setLayoutParams(objRLActionBarParams);
objRLActionBar.setBackgroundColor(Color.parseColor("#2e4862"));
objRLBody.addView(objRLActionBar);
RelativeLayout objRLSelectedActionBar=new RelativeLayout(this);
objRLSelectedActionBar.setId(1003);
RelativeLayout.LayoutParams objRLSelectedActionBarParams=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
objRLSelectedActionBarParams.addRule(RelativeLayout.BELOW,objRLActionBar.getId());
objRLSelectedActionBar.setLayoutParams(objRLSelectedActionBarParams);
objRLSelectedActionBar.setBackgroundColor(Color.WHITE);
objRLSelectedActionBar.setGravity(Gravity.CENTER|Gravity.LEFT);
TextView objTVSelectedAction = new TextView(this);
RelativeLayout.LayoutParams objTVSelectedActionParams=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
objTVSelectedAction.setLayoutParams(objTVSelectedActionParams);
objTVSelectedAction.setGravity(Gravity.CENTER);
objTVSelectedAction.setTextColor(Color.BLACK);
objTVSelectedAction.setTextSize(TypedValue.COMPLEX_UNIT_DIP,18);
objTVSelectedAction.setText("Scroll Test");
objTVSelectedAction.setTypeface(null, Typeface.BOLD);
objTVSelectedAction.setPadding(4, 0, 4, 0);
objTVSelectedAction.setId(1004);
objRLSelectedActionBar.addView(objTVSelectedAction);
objRLBody.addView(objRLSelectedActionBar);
/* header portion ends here*/
/* Relative layout which hold scroll view*/
RelativeLayout objRLScrollView = new RelativeLayout(this);
objRLScrollView.setId(1005);
objRLScrollView.setBackgroundColor(Color.parseColor("#d8e4f3"));
objRLScrollView.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER_HORIZONTAL);
RelativeLayout.LayoutParams objRLScrollViewParams = new RelativeLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
objRLScrollViewParams.addRule(RelativeLayout.BELOW ,objTVSelectedAction.getId());
ScrollView objScrollView=new ScrollView(this);
objScrollView.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
objScrollView.setFillViewport(true);
/* contents */
RelativeLayout objRLContent = new RelativeLayout(this);
objRLContent.setId(1006);
objRLContent.setBackgroundColor(Color.parseColor("#d8e4f3"));
objRLContent.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER_HORIZONTAL);
RelativeLayout.LayoutParams objRLContentParams = new RelativeLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
// objRLContentParams.addRule(RelativeLayout.BELOW ,objTVSelectedAction.getId());
objRLContent.setLayoutParams(objRLContentParams);
/* adding layouts containing Edittext (for testing scroll view) */
RelativeLayout rl2= addEditText(objRLContent,null,1);
RelativeLayout rl3= addEditText(objRLContent,rl2,2);
RelativeLayout rl4= addEditText(objRLContent,rl3,3);
RelativeLayout rl5= addEditText(objRLContent,rl4,4);
RelativeLayout rl6= addEditText(objRLContent,rl5,5);
RelativeLayout rl7= addEditText(objRLContent,rl6,6);
RelativeLayout rl8= addEditText(objRLContent,rl7,7);
RelativeLayout rl9= addEditText(objRLContent,rl8,8);
RelativeLayout rl10= addEditText(objRLContent,rl9,9);
RelativeLayout rl11= addEditText(objRLContent,rl10,10);
RelativeLayout rl12= addEditText(objRLContent,rl11,11);
RelativeLayout rl13= addEditText(objRLContent,rl12,12);
objScrollView.addView(objRLContent); // adding contents to scroll view
objRLScrollView.addView(objScrollView); // Adding scroll view to a relative layout
objRLBody.addView(objRLScrollView); // adding relative layout to body layout
// adding footer to body
RelativeLayout objRLFooter=new RelativeLayout(this);
RelativeLayout.LayoutParams objRLFooterParams=new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,25);
objRLFooterParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM,objRLBody.getId());
objRLFooter.setLayoutParams(objRLFooterParams);
objRLFooter.setBackgroundColor(Color.parseColor("#2e4862"));
objRLFooter.setGravity(Gravity.CENTER);
objRLBody.addView(objRLFooter);
this.setContentView(objRLBody);
}
private RelativeLayout addEditText(RelativeLayout objRLContent,RelativeLayout layoutAbove,int i ) {
RelativeLayout objRLEditText = new RelativeLayout(this);
objRLEditText.setId(1100+i);
RelativeLayout.LayoutParams objRLEditTextParams = new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
if(layoutAbove!=null)
objRLEditTextParams.addRule(RelativeLayout.BELOW,layoutAbove.getId());
objRLEditText.setLayoutParams(objRLEditTextParams);
objRLEditText.setPadding(8, 2, 8, 2);
EditText objETData = new EditText(this);
objETData.setId(1300+i);
RelativeLayout.LayoutParams objETDataParams=new RelativeLayout.LayoutParams(200,LayoutParams.WRAP_CONTENT);
objETData.setLayoutParams(objETDataParams);
objETData.setPadding(8, 0, 8, 0);
objETData.setTextSize(TypedValue.COMPLEX_UNIT_DIP,18);
objETData.setText(""+i);
objETData.setSingleLine(true);
objRLEditText.addView(objETData);
objRLContent.addView(objRLEditText);
return objRLEditText;
}
}
finally I got the desired layout by simply rearrange the order of adding inner layout to the body layout in the above code, and the order is as follows
objRLBody.addView(objRLScrollView);
objRLBody.addView(objRLActionBar);
objRLBody.addView(objRLSelectedActionBar);
objRLBody.addView(objRLFooter);
also need to set scrollview padding, if we not set padding to scrollview (header layout width as top padding and footer with as bottom) the components view may blocked by header or footer layout.
This worked for me well....
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="#+id/scrollView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#drawable/light_gradient">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
//put your UI here
</RelativeLayout>
</ScrollView>