“在代码中均匀分配权重”

时间:2011-06-07 09:47:38

标签: java android button

我有一个小问题......这是我的代码..有一种方法可以“均匀地分配权重”,这些按钮是我制作的......我试着button[i].setWidth() ..但当我转过身来我的手机看起来很丑..那么是否有分配按钮宽度自动?

    ViewGroup row1 = (ViewGroup)findViewById(R.id.TableRow02);
    ViewGroup row2 = (ViewGroup)findViewById(R.id.TableRow04);
    ViewGroup row3 = (ViewGroup)findViewById(R.id.TableRow06);
    ViewGroup row4 = (ViewGroup)findViewById(R.id.TableRow08);
    ViewGroup row5 = (ViewGroup)findViewById(R.id.TableRow10);

    Button button[] = new Button[36];
    for(int i=1;i<36;i++)
    {
        button[i] = new Button(this);

        if(i==32||i==33||i==34||i==35){button[i].setVisibility(-1);}

        button[i].setText("700€");
        button[i].setTextSize(10);
        button[i].setWidth(20);

     // Insert buttons in rows
        if(i<8){row1.addView(button[i]);}
        else if(i<15){row2.addView(button[i]);}
        else if(i<22){row3.addView(button[i]);}
        else if(i<29){row4.addView(button[i]);}
        else if(i<36){row5.addView(button[i]);}
    }

2 个答案:

答案 0 :(得分:4)

从战术上讲,将按钮放在LinearLayout中并为每个按钮设置android:layout_weight="1"

战略上,设计一个不错的用户界面,不涉及一排36个按钮。

答案 1 :(得分:0)

正如CommonsWare所说,您应该考虑设置按钮的重量参数,而不是设置宽度,以实现灵活的布局。

如果要以编程方式实现此目的(即在代码中而不是在XML布局中),可以使用按钮的setLayoutParams方法。我没有测试过,但这样的事情应该有效:

// outside of loop
LayoutParams p = new LinearLayout.LayoutParams(
    LayoutParams.MATCH_PARENT, 
    LayoutParams.MATCH_PARENT, 
    1.0
);

....
// enter loop
....

button[i].setLayoutParams(p);

在此示例中,1.0表示权重。其他两个参数代表layout_widthlayout_height参数。

但严重的是,我无法想象具有36个按钮的布局非常人性化: - )