TableLayout中的Android按钮宽度不正确

时间:2013-05-14 04:41:08

标签: android android-button android-tablelayout

我有一系列按钮要添加到TableLayout中的不同行。每个按钮需要有不同的宽度。但是,每个按钮的宽度最终设置为等于具有最大宽度的按钮。有人可以告诉我如何解决这个问题吗?

        <TableLayout
            android:id="@+id/table_to_fill"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TableRow
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <TextView
                    android:id="@+id/cat"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text=""
                    android:textSize="12sp"
                    android:textStyle="bold"
                    android:typeface="serif" >
                </TextView>

                <TextView
                    android:id="@+id/num_high"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text=""
                    android:textSize="12sp"
                    android:textStyle="bold"
                    android:typeface="serif" >
                </TextView>
            </TableRow>
        </TableLayout>

Java代码:

    for (int i =0; i< 5; ++i){
        TableRow row = new TableRow(this);
        TextView t1 = new TextView(this);
        t1.setText("cat: ");
        t1.setTextSize(12);
        row.addView(t1);
        Button b1 = new Button(this);

        b1.setText(numHighRisk.toString());
        b1.setTextSize(12);
        b1.setPadding(0, 0, 0, 0);
        row.addView(b1);
        int width;
        if (i > 2)
            width = 20;
        else
            width = 40;
        int heightDp = (int) (25 * scale + 0.5f);
        int widthDp = (int) (width * scale + 0.5f);


        ViewGroup.LayoutParams params = b1.getLayoutParams();
        params.height = heightDp;
        params.width = widthDp;
        b1.setLayoutParams(params);

            TableLayout.LayoutParams rowParams = new TableLayout.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT);
        table.addView(row,rowParams);
    }

(使用此代码,每个按钮的宽度相同)

2 个答案:

答案 0 :(得分:1)

是的,在表格布局中,所有项目都将具有相同的大小,以使它们正确对齐,你可以做一件事尝试给你的按钮边距,以便他们的尺寸将减少,不同的按钮的不同边距。 例如,

 android:layout_marginLeft="40dp"
 android:layout_marginRight="40dp"

答案 1 :(得分:0)

通过一些实验,我可以通过首先将每个按钮添加到FrameLayout然后将FrameLayout添加到行来完成不同的宽度。