質問

I have a problem regarding not using XML in the TableLayout. Someone has already asked the same as I do but the answer provided has been unable to help me. how to set width of column dynamically in android tablelayout?

Right now I have this

TableLayout tl = (TableLayout) findViewById(R.id.TableLayout1);
    /* Create a new row to be added. */
    TableRow tr = new TableRow(this);
    tr.setLayoutParams(new TableRow.LayoutParams(
            TableRow.LayoutParams.FILL_PARENT,
            TableRow.LayoutParams.WRAP_CONTENT));

    /* Create a Button to be the row-content. */
    Button b = new Button(this);
    b.setText("Dynamic Button");
    b.setLayoutParams(new TableRow.LayoutParams(
            TableRow.LayoutParams.FILL_PARENT,
            TableRow.LayoutParams.WRAP_CONTENT));
    /* Add Button to row. */

    tr.addView(b);
    Button a = new Button(this);
    a.setText("Dynamic Button");
    a.setLayoutParams(new TableRow.LayoutParams(
            TableRow.LayoutParams.FILL_PARENT,
            TableRow.LayoutParams.WRAP_CONTENT));
    /* Add Button to row. */
    a.setGravity(2);

    tr.addView(a);

But I fail to see how changing

tr.setLayoutParams

Will do the job of making for example the first button column 70% and the other button the 30%

役に立ちましたか?

解決 2

you need setLayoutParams to your widget like following code:

TableRow.LayoutParams tlp = new TableRow.LayoutParams(width,heigh);
b.setLayoutParams(tlp);

TableRow.LayoutParams tlp1 = new TableRow.LayoutParams(width/3,heigh/3);
a.setLayoutParams(tlp1);

他のヒント

You can create an linear layout with weight and keep those two buttons inside linear layout and then set linear to your table row.

Check below code:

TableLayout tl = (TableLayout) findViewById(R.id.TableLayout1);
    /* Create a new row to be added. */

    TableRow.LayoutParams params = new TableRow.LayoutParams(
            TableRow.LayoutParams.FILL_PARENT,
            TableRow.LayoutParams.WRAP_CONTENT);

    TableRow tr = new TableRow(this);
    tr.setLayoutParams(params);

    params = new TableRow.LayoutParams(0,
            TableRow.LayoutParams.WRAP_CONTENT);
    LinearLayout layout = new LinearLayout(this);
    params.weight = 1;
    layout.setLayoutParams(params);
    layout.setBackgroundColor(Color.WHITE);
    layout.setWeightSum(1);

    /* Create a Button to be the row-content. */

    LinearLayout.LayoutParams chiledParams = new LinearLayout.LayoutParams(0,
            LinearLayout.LayoutParams.WRAP_CONTENT);
    chiledParams.weight = (float) 0.7;
    Button b = new Button(this);
    b.setText("Button");
    b.setLayoutParams(chiledParams);

    /* Add Button to row. */


    LinearLayout.LayoutParams chiledParams1 = new LinearLayout.LayoutParams(0,
            LinearLayout.LayoutParams.WRAP_CONTENT);
    chiledParams1.weight = (float) 0.3;
    Button a = new Button(this);
    a.setText("Button");
    a.setLayoutParams(chiledParams1);

    layout.addView(b);
    layout.addView(a);
    tr.addView(layout);
    tl.addView(tr);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top