Android - 以编程方式为TableRows添加垂直对齐的项目

时间:2015-10-26 13:17:54

标签: android alignment orientation tablelayout tablerow

我以编程方式填充TableLayout中的行。每行包含3个TextView,但它们是水平对齐的,我想要它们垂直。

TableLayout table = (TableLayout) findViewById(R.id.tableLayout_customers);
TableRow row = new TableRow(this);
row.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));

TextView tw_name = new TextView(getApplicationContext());
TextView tw_email = new TextView(getApplicationContext());
TextView tw_phone = new TextView(getApplicationContext());

tw_name.setText("Mr Foo");
tw_email.setText("mrfoo@bar.ninja");
tw_phone.setText("123");

row.addView(tw_name);
row.addView(tw_email);
row.addView(tw_phone);

table.addView(row, new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));

我试过这个:

 row.setGravity(Gravity.CENTER_VERTICAL);
 row.setOrientation(LinearLayout.VERTICAL);

..显然,这不是它。任何想法??

2 个答案:

答案 0 :(得分:0)

不是插入TableRow,而是插入另一个TableLayout并将项目放入第二个Layout。 您对TableRow这个名称似乎意味着其中的每个元素都将被放入一个新行这一事实感到困惑。但事实并非如此。 TableRow表示"这是一个新行"。所以TableRow创建一个新行,其中的所有项目都是......在这个新行上(因此水平对齐)

答案 1 :(得分:0)

您只有一个表行实例,因此为什么它以水平顺序附加所有文本视图。为每一行创建一个表行实例,并向每个实例添加文本视图,这将为每个textview创建一行。