Неправильная ширина кнопки 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);
    }

(Каждая кнопка имеет одинаковую ширину, используя этот код)


person radhika    schedule 14.05.2013    source источник


Ответы (2)


Да, в макете таблицы все элементы будут иметь одинаковый размер, чтобы сделать их правильно выровненными, вы можете сделать одну вещь, попробуйте дать маржу вашей кнопке, чтобы ее размер уменьшился, разные поля для разных кнопок. Например,

 android:layout_marginLeft="40dp"
 android:layout_marginRight="40dp"
person Shubham    schedule 14.05.2013

Немного поэкспериментировав, я смог получить различную ширину, сначала добавив каждую кнопку в FrameLayout, а затем добавив FrameLayout в строку.

person radhika    schedule 15.05.2013