0

我在 FrameLayout 中有一个 LinearLayout 用于选项卡目的。我正在尝试将 TableRow 添加到代码中的 LinearLayout 中。

LinearLayout testLayout = (LinearLayout)findViewById(R.id.testLayout);
TableRow tableRow = new TableRow(this);
tableRow.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));

这将获取我的 LinearLayout 并根据我想要的规范创建一个 TableRow。我知道这部分正在工作。

TextView textOne = new TextView(this);
textOne.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
textOne.setText("One");

TextView textTwo = new TextView(this);
textTwo.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
textTwo.setText("Two");

在这里,我毫无问题地制作了两个 TextView。

tableRow.addView(textOne);
tableRow.addView(textTwo);
testLayout.addView(tableRow, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));

这是我假设一切都出错的地方。发生的事情是它只显示 textTwo。我不知道为什么它没有像 XML 中的普通 TableRow 那样按顺序显示它们。我再说一遍,这必须在代码中完成。请帮忙,谢谢。

4

2 回答 2

0

你有没有导入这个import android.widget.TableRow.LayoutParams

下面的代码对我有用

  TableLayout tl = (TableLayout) findViewById(R.id.spreadsheet);
  TableRow tr = new TableRow(this);
  LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
  tr.setLayoutParams(lp);

  TextView tvLeft = new TextView(this);
  tvLeft.setLayoutParams(lp);
  tvLeft.setBackgroundColor(Color.WHITE);
  tvLeft.setText("OMG");
  TextView tvCenter = new TextView(this);
  tvCenter.setLayoutParams(lp);
  tvCenter.setBackgroundColor(Color.WHITE);
  tvCenter.setText("It");
  TextView tvRight = new TextView(this);
  tvRight.setLayoutParams(lp);
  tvRight.setBackgroundColor(Color.WHITE);
  tvRight.setText("WORKED!!!");

  tr.addView(tvLeft);
  tr.addView(tvCenter);
  tr.addView(tvRight);

  tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

  tl.addView(tr, new TableLayout.LayoutParams(TableLayout.LayoutParams.FILL_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));
于 2013-06-05T11:56:51.883 回答
0

我认为您想动态创建 TextView 并且应该收到错误“removeView () parent”。这是一个很好的解决方案:

TableView tlSkills = (TableView) findViewById(R.id.myTableView);
if(listSkills.size() > 0) {
     TableRow tableRow = new TableRow(getContext());

     int i = 0;
     for (Skills s : listSkills) {
     TextView textView = new TextView(getContext());
     textView.setText("" + s.getName());

     tableRow.addView(textView);

     if(i > 0) { 
          tlSkills.removeView(tableRow);//this is to avoid the error I mentioned above.
     }

     tlSkills.addView(tableRow);

     i++;
  }
}
于 2016-08-23T15:34:06.827 回答