android - 动态宽度列表格布局

标签 android android-tablelayout

我有一个关于不在 TableLayout 中使用 XML 的问题。 已经有人问过和我一样的问题,但提供的答案无法帮助我。 how to set width of column dynamically in android tablelayout?

现在我有这个

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);

但我看不出如何改变

tr.setLayoutParams

将完成例如第一个按钮列 70% 和另一个按钮 30% 的工作

最佳答案

您可以创建一个带有权重的线性布局,并将这两个按钮保留在线性布局内,然后将线性设置为表格行。

检查下面的代码:

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);

关于android - 动态宽度列表格布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21898746/

相关文章:

java - 获取括号之间的字符串

java - 转义字符类中的单个字符

android - ListViewItem 背景颜色

android - 当activity从后台转到前台时,按钮的文本布局突然从上到下变化

android - 无法以编程方式在另一个内部添加 TableRow

javascript - 在其他文件 Cordova/PhoneGap 中创建 GoogleMap 对象

android - 解析: Retrieving Child from Parent

android - 填充表格布局android

android - TextView 并不总是扩展到 TableLayout 中的第二行

android - TableLayout 中只出现一个 TextView