这个Android Snippet在做什么?

时间:2016-07-18 22:21:40

标签: java android android-tablelayout tablerow

编辑**除了我的主要问题外,我想出了自己的答案如下:

            TableLayout tableLayout = new TableLayout(this);

            TableRow row = new TableRow(getApplicationContext());
            row.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,
                    TableRow.LayoutParams.WRAP_CONTENT));
            // inner for loop
            for (int j = 1; j <= courseHoleCount; j++) {
                 **TextView tv = new TextView(getApplicationContext());
                tv.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,
                        TableRow.LayoutParams.WRAP_CONTENT));**
                tv.setBackgroundResource(R.drawable.cell_shape);
                tv.setTextSize(30);
                tv.setPadding(5, 5, 5, 5);
                tv.setText(String.valueOf(players[i-1].getScore()[j-1]));// (-1) because j = 1 and not 0.
                row.addView(tv);
            }
            tableLayout.addView(row);


            linearLayout.addView(tableLayout);

在上面的代码片段中,这是做什么以及为什么/ TableRow.Layout params被添加到文本视图布局参数中?

tv.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,
                    TableRow.LayoutParams.WRAP_CONTENT));

2 个答案:

答案 0 :(得分:0)

TextView的父级是TableRow,因此TextView的布局参数应为TableRow.LayoutParams类型。

这与指定:

完全相同
<TableRow ...>
    <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content" />
</TableRow>

如果将TextView添加到其他ViewGroup LinearLayout,则需要设置LinearLayout.LayoutParams

答案 1 :(得分:0)

正在使用

TableRow.LayoutParams,因为tvrow的孩子,TableRow。 如果您查看Android API reference,则说明

  

设置与此视图关联的布局参数。这些供应参数提供给此视图的父级,指定应如何排列。

LayoutParams构造函数的两个参数用于设置tv的宽度和高度。由于宽度和高度都设置为WRAP_CONTENT,因此tv will be big enough to enclose its content (plus padding)的大小。