我基本上想要这样的东西:
TextView
Button
Button
.
.
.
TextView TextView
SeekBar
Button
我必须以编程方式执行此操作。 现在,除了SeekBar上方的TextViews没有显示之外,我还能正常工作。
正在执行此工作的相关代码是
//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);
我无法弄清楚发生了什么。我得到的显示就像是
TextView
Button
Button
.
.
.
SeekBar
Button
如果有人能指出我正确的方向,那就太好了。
谢谢!
答案 0 :(得分:2)
您需要在tableRow元素的子元素中使用TableRow.layout参数。这已得到很好的解释here。请参考并更正。这是一个非常简单的打嗝,很容易被忽略。
你的textview应该是
tv2.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
同样适用于tv3。