0

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

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

没有

这是我的代码:

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

如果有人知道我应该如何将我的代码从 Current Situation 更改为 mockup Expected Situation,我将不胜感激。如果我做错了什么,请发表评论。提前致谢。

4

2 回答 2

0

将每个 textview 的布局权重设置为 1,将布局宽度设置为 0dp。这将导致他们平均分配可用空间。您可以酌情使用布局重力左、中和右,以进一步确保最大分离。

于 2012-04-09T22:05:19.010 回答
0

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

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

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

没有

于 2012-04-09T22:53:54.303 回答