Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么通过编程添加的TableRows不与我的表头对齐?_Java_Android_Textview_Tablelayout_Tablerow - Fatal编程技术网

Java 为什么通过编程添加的TableRows不与我的表头对齐?

Java 为什么通过编程添加的TableRows不与我的表头对齐?,java,android,textview,tablelayout,tablerow,Java,Android,Textview,Tablelayout,Tablerow,我的目标: 我试图用一堆以编程方式添加的视图填充一个表(用我在xml中创建的标题)。计划是将一些文本视图添加到表格行,然后将该表格行添加到创建的最终表格中。我试着跟着 我的问题: 以编程方式添加的视图不与xml创建的TextView指定的列内联。请参见以下屏幕截图: 我的代码: 1.)XML 如何将“硬编码”xml表格行与通过编程添加的视图和行连接起来 尝试手动向布局参数添加对齐规则,如下所示: LayoutParams myParams = new LayoutParams(LayoutPa

我的目标:

我试图用一堆以编程方式添加的视图填充一个表(用我在xml中创建的标题)。计划是将一些
文本视图
添加到
表格行
,然后将该
表格行
添加到创建的最终表格中。我试着跟着

我的问题:

以编程方式添加的视图不与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);