如何动态地将TableLayout和TableRow修复到特定位置?

时间:2012-04-09 21:50:52

标签: java android tablelayout tablerow

我在使用TableLayout中的一些TextView动态设置TableRow时遇到问题。我有两张图片,一张是我当前的情况,另一张是我的模型,预期情况(我需要实现的目标)。我没有任何XML布局;所有这些都是以编程方式创建的,这也是我需要实现的目标。

显示的快照是高分屏幕,我在其中获得高分的玩家列表,并在TableLayout中完全显示它们。我只是遇到行/列位置问题。

nothing

这是我的代码:

public void onResume() {
    super.onResume();

    //=============================================
    TextView number = new TextView(this);
    number.setText("1");
    TextView place = new TextView(this);
    place.setText("4th");
    TextView testScore = new TextView(this);
    testScore.setText("113489");
    table = new TableLayout(this);
    //rows = new Stack<TableRow>();
    TableRow row = new TableRow(this);
    row.addView(number);
    row.addView(place);
    row.addView(testScore);
    table.addView(row);
    this.setContentView(table);
}

如果有人知道我应该如何将我的代码从现状更改为预期的样机,我很高兴地感激它。如果我做错了,请发表评论。提前谢谢。

2 个答案:

答案 0 :(得分:0)

将每个textview的布局权重设置为1,将布局宽度设置为0dp。这将导致他们平等地分割可用空间。您可以根据需要使用布局重力左,中,右,以进一步确保最大间隔。

答案 1 :(得分:0)

我刚刚找到了一个关于TableLayout和TableRow的良好链接,动态创建了特定的位置。 Link is here.当然,这里的代码只是它的准系统,用于演示简单的位置布局。

这是我的代码和结果的给定图片:

public void onResume() {
        super.onResume();



        //=============================================

        dip = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (float) 1, this.getResources().getDisplayMetrics());
        if (dip <= 0)
            dip = 1;


        TextView number = new TextView(this);
        TextView place = new TextView(this);
        TextView testScore = new TextView(this);


        number.setText("1");
        place.setText("4th");
        testScore.setText("113489");

        number.setWidth(50 * dip);
        place.setWidth(75 * dip);
        testScore.setWidth(150 * dip);

        number.setPadding(20*dip, 0, 0, 0);

        table = new TableLayout(this);
        TableRow row = new TableRow(this);
        row.addView(number);
        row.addView(place);
        row.addView(testScore);
        table.addView(row, new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT));
        this.setContentView(table);
    }

我真的很惊讶有一种获得DIP单元的方法。应该首先搜索一下。 :P

nothing