Java 为什么通过编程添加的TableRows不与我的表头对齐?
我的目标: 我试图用一堆以编程方式添加的视图填充一个表(用我在xml中创建的标题)。计划是将一些Java 为什么通过编程添加的TableRows不与我的表头对齐?,java,android,textview,tablelayout,tablerow,Java,Android,Textview,Tablelayout,Tablerow,我的目标: 我试图用一堆以编程方式添加的视图填充一个表(用我在xml中创建的标题)。计划是将一些文本视图添加到表格行,然后将该表格行添加到创建的最终表格中。我试着跟着 我的问题: 以编程方式添加的视图不与xml创建的TextView指定的列内联。请参见以下屏幕截图: 我的代码: 1.)XML 如何将“硬编码”xml表格行与通过编程添加的视图和行连接起来 尝试手动向布局参数添加对齐规则,如下所示: LayoutParams myParams = new LayoutParams(LayoutPa
文本视图
添加到表格行
,然后将该表格行
添加到创建的最终表格中。我试着跟着
我的问题:
以编程方式添加的视图不与xml创建的TextView指定的列内联。请参见以下屏幕截图:
我的代码:
1.)XML
如何将“硬编码”xml表格行与通过编程添加的视图和行连接起来 尝试手动向布局参数添加对齐规则,如下所示:
LayoutParams myParams = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
myParams.addRule(RelativeLayout.ALIGN_RIGHT, R.id.tableColumnX);
TextView t3 = new TextView(this);
t3.setText("I am textView3");
t3.setLayoutParams(myParams);
听起来很直截了当。我很想试试。但是,如何或在何处定义用
R.id.tableColumnX
引用的资源?我只是将其命名为随机。填写您自己命名的表值。当然,当然。我完全明白了。我只是想知道如何引用某个专栏!?或者您建议引用第一行的视图吗?动态添加小部件时,始终为添加的视图分配适当的LayoutParams
,这对于TableLayout
和TableRows
非常重要。在您的情况下,TableRow
应该具有TableLayout.LayoutParams
作为LayoutParams
,并且添加到TableRow
的视图应该具有TableRow.LayoutParams
。
public class EvalActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_eval);
TableLayout tableViewTable = (TableLayout) findViewById(R.id.tableViewTable);
TableRow tr = new TableRow(this);
tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
Button b = new Button(this);
b.setText("Button");
b.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
TextView t1 = new TextView(this);
t1.setText("I am textView1");
t1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
TextView t2 = new TextView(this);
t2.setText("I am textView2");
t2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
TextView t3 = new TextView(this);
t3.setText("I am textView3");
t3.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
TextView t4 = new TextView(this);
t4.setText("I am textView3");
t4.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
tr.addView(b);
tr.addView(t1);
tr.addView(t2);
tr.addView(t3);
tr.addView(t4);
tableViewTable.addView(tr,(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)));
}
LayoutParams myParams = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
myParams.addRule(RelativeLayout.ALIGN_RIGHT, R.id.tableColumnX);
TextView t3 = new TextView(this);
t3.setText("I am textView3");
t3.setLayoutParams(myParams);