2011-09-02 10 views
36

Estoy intentando añadir filas de la tabla siguiente programación del código hereañadiendo programación TableRow a TableLayout no trabajar

/* Find Tablelayout defined in main.xml */ 
    TableLayout tl = (TableLayout) findViewById(R.id.SaleOrderLines); 
    /* Create a new row to be added. */ 
    TableRow tr = new TableRow(this); 
    tr.setLayoutParams(new TableRow.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
    /* Create a Button to be the row-content. */ 
    Button b = new Button(this); 
    b.setText("Dynamic Button"); 
    b.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
    /* Add Button to row. */ 
    tr.addView(b); 
    /* Add row to TableLayout. */ 
    //tr.setBackgroundResource(R.drawable.sf_gradient_03); 
    tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 

Pero pero nada se dibuja en la pantalla. (Igual que uno mencionó here)

cuando he añadido tr.setBackgroundResource(R.drawable.sf_gradient_03);, la fila de la imagen de fondo se dibuja pero no el botón

Aquí está mi diseño

<!-- Sale Order Lines START --> 
<LinearLayout android:id="@+id/SaleOrderLinesArea" android:orientation="vertical" 
    android:layout_width="fill_parent" android:layout_height="fill_parent" 
    android:padding="10dip" android:background="@drawable/sf_gradient_11" > 
    <LinearLayout android:id="@+id/subHeaderArea" android:padding="10dip" 
      android:layout_width="fill_parent" android:layout_height="wrap_content" 
     > 
     <TextView android:id="@+id/screenTitle" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:textColor="@color/title_sub" android:textStyle="bold" 
      android:text="Order Lines" /> 
    </LinearLayout> 
    <TableLayout android:id="@+id/SaleOrderLines" 
     android:layout_width="fill_parent" android:layout_height="fill_parent" 
     android:padding="10dip" android:stretchColumns="*"> 
     <TableRow 
      android:background="@drawable/sf_gradient_13" android:padding="10dip" 
      > 
      <TextView android:id="@+id/order_ref_label" 
       android:layout_width="fill_parent" android:layout_height="wrap_content" 
       android:textColor="@color/fg_prime" android:text="bLA bLA" /> 
      <TextView android:id="@+id/product_label" 
       android:layout_width="wrap_content" android:layout_height="wrap_content" 
       android:textStyle="bold" android:textColor="@color/fg_title" 
       android:text="@string/product" /> 
      <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" 
       android:textStyle="bold" android:textColor="@color/fg_title" 
       android:text="@string/product_quantity" /> 
     </TableRow> 
     <TableRow android:background="@drawable/sf_gradient_03" 
      android:paddingLeft="10dip" android:paddingRight="10dip" 
      > 
      <TextView android:id="@+id/order_ref_label" 
       android:layout_width="fill_parent" android:layout_height="wrap_content" 
       android:textColor="@color/fg_prime" android:text="Fooo" /> 
      <Spinner android:id="@+id/product_spinner" 
       android:layout_width="wrap_content" android:layout_height="wrap_content" 
       android:prompt="@string/customer_prompt"> 
      </Spinner> 
      <EditText android:id="@+id/product_uom_qty" 
       android:layout_width="wrap_content" android:layout_height="wrap_content" 
       android:singleLine="true" android:fadingEdge="horizontal" /> 
     </TableRow> 
    </TableLayout> 
    <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" 
    android:paddingTop="5dip" android:paddingBottom="5dip"> 
     <Button android:id="@+id/add_button" android:layout_width="wrap_content" 
      android:layout_height="wrap_content" android:text="Add Lines" /> 
    </LinearLayout> 
</LinearLayout> 
<!-- Sale Order Lines END --> 
+0

¿Ha hecho tl.requestLayout() ;? después de agregar filas en él? –

+0

@PMB no agregado. –

Respuesta

116

¡Gracias, cada LayoutParams debería haber de android.widget.TableRow.LayoutParams excepto uno que suministra a tl.addView(...)

/* Find Tablelayout defined in main.xml */ 
TableLayout tl = (TableLayout) findViewById(R.id.SaleOrderLines); 
/* Create a new row to be added. */ 
TableRow tr = new TableRow(this); 
tr.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT)); 
/* Create a Button to be the row-content. */ 
Button b = new Button(this); 
b.setText("Dynamic Button"); 
b.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT)); 
/* Add Button to row. */ 
tr.addView(b); 
/* Add row to TableLayout. */ 
//tr.setBackgroundResource(R.drawable.sf_gradient_03); 
tl.addView(tr, new TableLayout.LayoutParams(TableLayout.LayoutParams.FILL_PARENT, TableLayout.LayoutParams.WRAP_CONTENT)); 
+3

Gracias Mithun .... salvaste mi día –

+1

Realmente ahorré mucho tiempo y trabajo. –

+1

omg. tienes razón. : D – gumuruh

6

favor tenga en cuenta que, puede ser que su código sea perfecto, pero las clases que está utilizando no son las adecuadas. Puede que haya utilizado import android.view.ViewGroup.LayoutParams, en tanto que la clase correcta está disponible de importación siguiente declaración:

android.widget.TableRow.LayoutParams importación

Cuestiones relacionadas