2016-05-10 10 views
0

Я застрял в этой проблеме часами, и я понятия не имею, как пройти ее.Android - TableRow выравнивание столбцов программно

Я запрограммировал создание таблицы (без проблем), но это проблема, с которой я сталкиваюсь. Когда я создаю строку, я бы хотел создать два отдельных столбца. Как вы увидите в моем примере, у меня есть два разных TextViews в одной строке («Тип» и «Число»). Как бы то ни было, обе они смещены влево.

Я бы хотел, чтобы они были в двух отдельных столбцах, одинаково раздвоенных по центру в каждом столбце.

Вот код, который я пытаюсь выполнить. Любая помощь будет оценена по достоинству.

Спасибо.

TableLayout serviceLineLayout = new TableLayout(getContext()); 
     serviceLineLayout.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.MATCH_PARENT)); 

TableRow firstTableRow = getFirstTableRow(getContext()); 
     serviceLineLayout.addView(firstTableRow); 

private TableRow getFirstTableRow(Context context) { 
     TableRow tableRow = new TableRow(context); 

     tableRow.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.MATCH_PARENT)); 


     TextView typeHeader = new TextView(context); 
     typeHeader.setId(0); 
     typeHeader.setText("Type"); 
     typeHeader.setTextSize(20); 
     tableRow.addView(typeHeader); 

     TextView numberHeader = new TextView(context); 
     numberHeader.setId(0); 
     numberHeader.setText("Number"); 
     numberHeader.setTextSize(20); 
     numberHeader.setGravity(Gravity.RIGHT); 
     tableRow.addView(numberHeader); 

     return tableRow; 
    } 
+0

Nope. В нем говорится, что он устарел. – Chosen1

ответ

1

Для этого tablelayout, определенного в xml, следующим будет динамический код в соответствующем java-файле (Activity/Fragment).

<TableLayout 
      android:id="@+id/fenceTableLayout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 
</TableLayout> 

активность логика TableView

//Table Layout parameters 
     TableRow.LayoutParams textViewParam = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,1.0f); 
     TableLayout tableLayout = (TableLayout) view.findViewById(R.id.fenceTableLayout); 
     TableRow trHead = new TableRow(context); 
     LayoutParams tableRowParams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
     trHead.setLayoutParams(tableRowParams); 

     TextView nameHead = new TextView(context); 
     nameHead.setText("Content left"); 
     nameHead.setLayoutParams(textViewParam); 
     nameHead.setGravity(Gravity.CENTER); 
     trHead.addView(nameHead); 

     TextView detailHead = new TextView(context); 
     detailHead.setText("Content right"); 
     detailHead.setGravity(Gravity.CENTER); 
     detailHead.setLayoutParams(textViewParam); 

     trHead.addView(detailHead); 
     tableLayout.addView(trHead); 

ПРИМЕЧАНИЕ: Многие ценности были переданы из файлов ресурсов, Вы можете либо безнадзорность/копировать их.

+0

Извините, одна вещь, о которой я забыл упомянуть, заключается в том, что класс, в котором находится этот код, не расширяет Activity. Он расширяет фрагмент. – Chosen1

+0

Это вовсе не проблема. Вы видите, как я сделал выравнивание представлений в представлении таблицы. Это не будет отличаться от Activity или Fragment :) – Stallion

+0

Я упростил для вас. Не путайте с предыдущими строками кода. – Stallion