Layoutparams在代码中设置权重

时间:2013-12-05 12:39:00

标签: java android tablelayout

您好我在XML中创建了TableLayout 现在在代码中我通过finViewById引用tablelayout。然后我创建动态新的TableRow(row2),其中包含四个子(当我点击dodaj_wiersz按钮时它会发生)。 Textv1,Editt1,Textv2,Editt2

我的问题是,我怎样才能为行设置均匀的权重,就像在XML中使用“均匀分布权重”按钮后一样。

我的代码:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
            setContentView(R.layout.nowe_sciany);

        final TableLayout tablayout=(TableLayout) findViewById(R.id.wyglad);

        //reakcja na dodaj wiersz
        final Button dodaj_wiersz=(Button) findViewById(R.id.addrow);
        dodaj_wiersz.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                TableRow row2 = new TableRow(getApplicationContext());

                textv1 = new TextView(getApplicationContext());
                textv2 = new TextView(getApplicationContext());
                editt1 = new EditText(getApplicationContext());
                editt2 = new EditText(getApplicationContext());
                textv1.setText("width: ");
                textv2.setText("height: ");

                row2.addView(textv1);
                row2.addView(editt1);
                row2.addView(textv2);
                row2.addView(editt2);

                tablayout.addView(row2, new TableLayout.LayoutParams());                            
            }           
        });         
    }
    @Override
    public void onClick(View v) {

}
}

2 个答案:

答案 0 :(得分:1)

如果您在TableRow中修复了4个视图(Textv1,Editt1,Textv2,Editt2),那么您可以像这样定义TableLayout:

TableRow.layoutParams trLayout = 
                    new LayoutParams(0, LayoutParams.MATCH_PARENT, 0.25f);
tablayout.addView(row2, trLayout);
  

要创建一个线性布局,其中每个孩子在屏幕上使用相同的空间量,请将每个视图的android:layout_height设置为“0dp”(对于垂直布局)或者将每个视图的android:layout_width设置为“ 0dp“(用于水平布局)。

LinearLayout是TableRowLayout #doc

的父级

答案 1 :(得分:0)

您可以在layoutparams上设置权重,如下所示:

TableRow.LayoutParams params = new TableRow.LayoutParams(
    LayoutParams.MATCH_PARENT,
    LayoutParams.MATCH_PARENT, 1.0f);

参数是宽度,高度和重量。

然后你可以设置参数的参数:

textv1.setLayoutParams(params);