2014-11-09 5 views
0

Я пытаюсь создать таблицу, которая позволит мне перечислить результаты поиска. Я хочу, чтобы две колонки имели разную ширину (например, 30% и 70%). Я получил эту работу для заголовков столбцов: -Проблемы с шириной столбца в таблице Android

<TableLayout 
    android:id="@+id/tableLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_below="@+id/textView1" 
    android:layout_marginTop="10dip" 
    android:padding="10dp" 
    android:shrinkColumns="*" 
    android:stretchColumns="*" 
    android:textColor="@color/white" > 

    <TableRow 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 

     android:weightSum="1" > 

     <TextView 
      android:id="@+id/TextViewTitle1" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.3" 
      android:text="Date" 
      android:background="@drawable/border" 
      android:textColor="@color/bluish" /> 

     <TextView 
      android:id="@+id/TextViewTitle2" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.7" 
      android:text="Task" 
      android:background="@drawable/border" 
      android:textColor="@color/bluish" /> 
    </TableRow> 
</TableLayout> 

Затем я хочу, чтобы добавить строки в таблицу в моей программе, где столбцы имеют одинаковую ширину заголовка строки, но мой код генерирует строки, в которых столбцы расщепляются 50% -50% по ширине: -

частное аннулируются BuildTable (Int строк, внутр COLS) {

 // outer for loop 
     for (int i = 1; i <= rows; i++) { 

     TableRow row = new TableRow(this); 
     row.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 
      LayoutParams.WRAP_CONTENT)); 
     for (int j = 1; j <= cols; j++) { 

     TextView tv1 = new TextView(this); 
     tv1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
      LayoutParams.WRAP_CONTENT)); 
     tv1.setBackgroundResource(R.drawable.border); 
     tv1.setPadding(5, 5, 5, 5); 
     tv1.setText("R " + i + ", C" + j); 



     row.addView(tv1); 

     } 

     table_layout.addView(row); 

     } 
     } 

Я бы признателен за любую помощь в получении колонки Wi dth к тому же, что и название.

+0

Могу ли я спросить, почему вы не упрощаете это с помощью ListView? –

ответ

0

Ну, я разработал то, что мне нужно для этого. Во-первых, создать файл макета, который я назвал table_row.xml

<?xml version="1.0" encoding="utf-8"?> 
<TableRow xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/tr_row" 

android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:weightSum="1" > 

<TextView 
       android:id="@+id/TextViewTitlei1" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="0.3" 
       android:text=" " 
       android:background="@drawable/border" 
       android:textColor="@color/bluish" /> 


      <TextView 
       android:id="@+id/TextViewTitlei2" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="0.7" 
       android:text=" " 
       android:background="@drawable/border" 
       android:textColor="@color/bluish" /> 




</TableRow> 

Тогда это упрощенная версия кода, чтобы ширина столбца 30% и 70%

private void addTableRow(String resIdTitle, String strValue){ 
     int yy=4; 
     for (int i = 1; i <= yy; i++) { 
     System.out.println("Step 16"); 
     LayoutInflater inflater = getLayoutInflater(); 
      TableRow tr = (TableRow)inflater.inflate(R.layout.table_row, table_layout, false); 
      System.out.println("Step 17"); 
      // Add First Column 
      TextView tvTitle = (TextView)tr.findViewById(R.id.TextViewTitlei1); 
      tvTitle.setText(resIdTitle+ " "+i); 
      System.out.println("Step 18"); 
      // Add the 3rd Column 
      TextView tvValue = (TextView)tr.findViewById(R.id.TextViewTitlei2); 
      tvValue.setText(strValue+ " "+i); 
      System.out.println("Step 19"); 
      table_layout.addView(tr); 
     } 
     } 

Это, кажется, работает.

1
private void addRow(Data data){ 

     TableRow row = (TableRow)View.inflate(getApplicationContext(), your table row , null); 
     //find your textviews and set data     
     (TextView)row.findViewById(R.id.TextViewTitlei1); 

    } 
    } 

они будут распространяться в соответствии с вашим необходимым весом.

Смежные вопросы