2011-07-27 39 views
6

我有一个名为aTable的TableView。 initialiseDTable()将第一行红色背景创建一个带有固定标题行的TableView(不滚动)

GOAL

  1. 防止从滚动标题行(WORKING FINE

  2. 保持与每个TextView的宽度相同的标题行给出了感觉这是aTable的孩子(不工作

学尝试

我的尝试是滚动视图之前创建的tableview和填充aTable然后提取标题行并将其插入作为这个tableview的一个孩子。

代码中添加标题行TO TABLE

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); 
} 

CODE

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> 

回答

5

我写了一系列博客文章涵盖了这个确切的问题。第一个是here并描述了类似的方法来回答已经给出的。然而,接下来的两篇文章将介绍更加优雅的解决方案。

+0

我只是掠过,看到图片似乎还不完美。我会很快读到它..我已经实现它我的方式..你可以看看https://market.android.com/details?id=mobi.foo.beirutairport –

+0

谢谢@MarkAllison你的博客真的帮助我: ) –