【问题标题】:How to fix my TableLayout and TableRow into specific positions dynamically?如何动态地将我的 TableLayout 和 TableRow 固定到特定位置?
【发布时间】:2012-04-10 06:53:54
【问题描述】:

我在使用 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,我将不胜感激。如果我做错了什么,请发表评论。提前致谢。

【问题讨论】:

    标签: java android tablelayout tablerow


    【解决方案1】:

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

    【讨论】:

    • TextView.setLayoutParams()使用ViewGroup.LayoutParams(),不知道应该使用什么子类的参数。你知道吗?
    【解决方案2】:

    我刚刚找到一个关于 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-05
      • 2011-07-30
      • 1970-01-01
      • 1970-01-01
      • 2018-09-19
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      相关资源
      最近更新 更多