首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式在线性布局中添加表格布局

以编程方式在线性布局中添加表格布局
EN

Stack Overflow用户
提问于 2012-06-14 07:22:13
回答 1查看 3.5K关注 0票数 1

我基本上想要这样的东西:

代码语言:javascript
复制
  TextView
  Button
  Button
  .
  .
  .
  TextView   TextView
  SeekBar
  Button

我必须以编程的方式完成这项工作。现在,除了SeekBar上的TextViews没有显示之外,一切都正常了。

完成这项工作的相关代码是

代码语言:javascript
复制
//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);

我搞不懂到底是怎么回事。我得到的显示是这样的

代码语言:javascript
复制
   TextView
   Button
   Button
   .
   .
   .

   SeekBar
   Button

如果有人能给我指出正确的方向,那就太好了。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-14 08:37:20

您需要在tableRow元素的子元素中使用TableRow.layout参数。here已经很好地解释了这一点。请参考并更正它。这是一个非常简单的问题,很容易被忽略。

您的文本视图应该是

代码语言:javascript
复制
tv2.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));

对于tv3也是如此。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11024727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档