2011-07-27 8 views
6

Tengo un TableView llamado tabla. initialiseDTable() añade la primera fila con un fondo rojoCrear un TableView con una fila de encabezado fijo (no se desplaza)

META

  1. Prevenir la fila de encabezado de desplazamiento (trabajando bien)

  2. Keep la fila del encabezado con el mismo ancho de cada TextView que da la sensación que es el hijo de tabla (no trabajar)

attemp

Mi intento era crear un tableview antes de la ScrollView y poblar unaTabla luego extraer la fila de encabezado e insertarlo como un niño de esta mesa de trabajo.

código para agregar fila de encabezado A LA MESA

public void initialiseDTable() { 
    LayoutInflater inflater = getLayoutInflater(); 
    TableRow row = (TableRow) inflater.inflate(R.layout.table_row, dTable, 
      false); 
    View v = (View) inflater.inflate(R.layout.table_cell, row, false); 
    TextView A = (TextView) v.findViewById(R.id.table_cell_text); 
    A.setText(tag1); 
    row.addView(v); 
    v = (View) inflater.inflate(R.layout.table_cell, row, false); 
    A = (TextView) v.findViewById(R.id.table_cell_text); 
    A.setText(tag2); 
    row.addView(v); 
    v = (View) inflater.inflate(R.layout.table_cell, row, false); 
    A = (TextView) v.findViewById(R.id.table_cell_text); 
    A.setText(tag3); 
    row.addView(v); 
    v = (View) inflater.inflate(R.layout.table_cell, row, false); 
    A = (TextView) v.findViewById(R.id.table_cell_text); 
    A.setText(tag4); 
    row.addView(v); 
    if (this.showEST) { 
     v = (View) inflater.inflate(R.layout.table_cell, row, false); 
     A = (TextView) v.findViewById(R.id.table_cell_text); 
     A.setBackgroundColor(Color.RED); 
     A.setText(tag5); 
     row.addView(v); 
    } 
    dTable.addView(row); 
} 

CÓDIGO

public void updateATable() { 
    aTable.removeAllViews(); 
    initialiseATable(); 
    for (int i = 0; i < newA.size(); i++) 
     aTable.addView(newA.get(i)); //newA is an ArrayList <TableRow> 
    View view = aTable.getChildAt(0); 
    aTable.removeViewAt(0); 
    aTableH.removeAllViews(); 
    aTableH.addView(view,new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 
} 

XML

 <LinearLayout android:orientation="vertical" 
      android:layout_width="fill_parent" android:layout_height="fill_parent" 
      android:gravity="center" android:id="@+id/aLL"> 
      <TableLayout android:shrinkColumns="5" 
       android:stretchColumns="1,2,3,4" android:layout_height="wrap_content" 
       android:layout_width="wrap_content" android:id="@+id/aTableH"> 
      </TableLayout> 
      <ScrollView android:layout_width="fill_parent" 
       android:layout_height="wrap_content" android:id="@+id/aTableSV"> 
       <TableLayout android:shrinkColumns="5" 
        android:stretchColumns="1,2,3,4" android:layout_height="fill_parent" 
        android:layout_width="fill_parent" android:id="@+id/aTable"> 
       </TableLayout> 
      </ScrollView> 
     </LinearLayout> 

Respuesta

5

Estoy escribiendo una serie de publicaciones de blog que cubren este problema preciso. El primero es here y describe un enfoque similar a la respuesta ya dada. Sin embargo, los próximos dos artículos cubren una solución mucho más elegante.

+0

Acabo de desnatar y vi que la imagen parece que todavía no es perfecta. Lo leeré pronto. Ya lo implementé a mi manera. Puede echarle un vistazo a https://market.android.com/details?id=mobi.foo.beirutairport –

+0

Gracias @MarkAllison su blog realmente me ayudó:) –

Cuestiones relacionadas