【问题标题】:Width column tablelayout dynamically宽度列表格动态布局
【发布时间】:2014-02-20 13:48:16
【问题描述】:

我有一个关于不在 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% 的工作

【问题讨论】:

    标签: android android-tablelayout


    【解决方案1】:

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

    检查以下代码:

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

    【讨论】:

      【解决方案2】:

      您需要 setLayoutParams 到您的小部件,如以下代码:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-02
        • 1970-01-01
        • 1970-01-01
        • 2013-07-23
        • 2010-11-24
        • 1970-01-01
        • 1970-01-01
        • 2019-09-09
        相关资源
        最近更新 更多