Reputation: 27
I basically want something like:
TextView
Button
Button
.
.
.
TextView TextView
SeekBar
Button
I have to do this programmatically. Now, I have everything working except for the fact that the TextViews above the SeekBar are not showing.
The relevant code that is doing this work is
//Setting the linear layout
ll = new LinearLayout(getApplicationContext()); //a linear layout encompasses all the other elements
ll.setOrientation(LinearLayout.VERTICAL); //orientation has to be vertical
ll.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); //the layout occupies the complete screen
//Set the TextView for the Question
tv1 = new TextView(getApplicationContext());
tv1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); //sets the dimensions of the textView
ll.addView(tv1); //add the TextView to the LinearLayout
//Set the buttons (?)
b = new Button [MAX_OPTIONS];
for(int i=0;i<MAX_OPTIONS;i++){
b[i] = new Button(getApplicationContext()); //set the context for each button
b[i].setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
ll.addView(b[i]);
}
//Set the Table Layout
tl = new TableLayout(getApplicationContext());
tl.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
tl.setColumnStretchable(0, true);
tl.setColumnStretchable(1, true);
//Set the Table Row
tr = new TableRow(getApplicationContext());
tr.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
tr.setPadding(dipConvert(5), dipConvert(5), dipConvert(5), dipConvert(5));
//Set the two TextViews
tv2 = new TextView(getApplicationContext());
tv2.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
tv2.setGravity(Gravity.LEFT); //set the gravity of this TextView to left
tv3 = new TextView(getApplicationContext());
tv3.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
tv3.setGravity(Gravity.RIGHT);
tv3.setPadding(0, 0, dipConvert(15), 0); //set the padding for this to be displayed(the number 15 was emperically determined)
//Add the Textview to table row
tr.addView(tv2); tr.addView(tv3);
//Add the TableRow to the Table Layout
tl.addView(tr);
//Add the TableLayout to the LinearLayout
ll.addView(tl);
//Set the Seekbar
sb1 = new SeekBar(getApplicationContext());
sb1.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
sb1.setMax(100);
sb1.setMinimumWidth(250);
ll.addView(sb1);
//Set the Seekbar Button
sb1_b = new Button(getApplicationContext());
sb1_b.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
ll.addView(sb1_b);
setContentView(ll);
I cannot figure out what is going on. The display I get is something like
TextView
Button
Button
.
.
.
SeekBar
Button
It would be great if someone could point me in the right direction.
Thanks!
Upvotes: 1
Views: 3574
Reputation: 1219
You need to need TableRow.layout param in the child elements of the tableRow elements. This has been explained well here. Please refer it and correct it. It is a very simple hiccup, which can be easily ignored.
Your textview should be
tv2.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
and similarly for tv3 as well.
Upvotes: 3