如何从一行(RowTable)中显示所有小部件?

时间:2011-02-19 13:53:34

标签: java android android-layout

我写的是下面的代码,但是没有显示按钮,因为我在bar layoutParametrs中设置了FILL_PARENT。如何在不使用XML的情况下修复它?

    TableRow        myLayout    = new TableRow      (this);
    myLayout.setAlwaysDrawnWithCacheEnabled(true);
    TextView        text        = new TextView      (this);
        text.setText("Test: ");
    SeekBar         bar         = new SeekBar       (this);
    ToggleButton    button      = new ToggleButton  (this);
    myLayout.addView(   text    , new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
    myLayout.addView(   bar     , new TableRow.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
    myLayout.addView(   button  , new TableRow.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));

如果FILL_PARENT设置为bar

If FILL_PARENT set for bar

如果不是

If not set

两种变体都是错误的

2 个答案:

答案 0 :(得分:2)

当我需要用多个项填充一行时,我通常使用layout_weight和fill_parent的宽度设置。这会按行设置权重值的比例分配行的整个宽度。

由于您是在代码而不是xml中执行此操作,因此请查看带有第三个参数的LayoutParams的构造函数。这对应于layout_weight:

LayoutParams - int, int, float

答案 1 :(得分:1)

尝试使用WRAP_CONTENT和这样的权重参数。

myLayout.addView(   text    , new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,5));
myLayout.addView(   bar     , new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,10));
myLayout.addView(   button  , new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,85));