2015-10-26 8 views
1

Я заполняю строки в TableLayout программно. Каждая строка содержит 3 TextViews, но они выравниваются по горизонтали, и я хочу их вертикально.Android - программно добавить TableRows с элементами с вертикальным выравниванием

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("[email protected]"); 
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); 

.. но это не было оно, по-видимому. Есть идеи??

ответ

0

Вместо того, чтобы вставлять TableRow, вставьте еще один TableLayout и поместите свой элемент в этот второй макет. Вы смущены тем фактом, что имя TableRow означает, что каждый элемент внутри него будет помещен в новую строку. Но это не так. TableRow означает «это новая строка». Таким образом TableRow создает новую строку, и весь элемент внутри нее ... на этой новой строке (выравнивается по горизонтали)