2013-06-27 94 views
1

我有一個動態填充的TextViews工作列表。但現在我想把它變成一個多列的TableView。我已經知道它動態地創建行並將它們添加到佈局,但沒有顯示。有人能指出我看不到的東西嗎?Android TableLayout內容不顯示

調試器顯示包含包含文本的文本視圖的行的佈局。我試過讓事情match_parent寬度和高度,仍然無法得到任何顯示。

這是代碼。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/detailScroll" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<LinearLayout 
    android:id="@+id/detailLayout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/almost_black" 
    android:orientation="vertical" > 

    <TableLayout 
     android:id="@+id/detailTable" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/almost_black" 
     android:orientation="vertical" 
     android:stretchColumns="1" > 

     <TableRow 
      android:id="@+id/testRow" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 

      <TextView 
       android:id="@+id/testText" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Testing" /> 
     </TableRow> 
    </TableLayout> 

    <Button 
     android:id="@+id/protocolButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:layout_marginLeft="40sp" 
     android:layout_marginRight="40sp" 
     android:background="@drawable/protocol_button" 
     android:minHeight="40sp" 
     android:onClick="getProtocol" 
     android:padding="5sp" 
     android:text="@string/protocol_button_text" > 
    </Button> 
</LinearLayout> 
</ScrollView> 

的Java

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
setContentView(R.layout.detail); 
layout = (TableLayout) this.findViewById(R.id.detailTable); 
    TableRow tr; 

    if (project.ProtocolNumber != null) 
    { 
     tr = BuildTableRow(res.getString(R.string.protocol_number_header), project.ProtocolNumber); 
     layout.addView(tr); 
    } 
private TextView BuildTextView(String string) 
{ 
    TextView tv = new TextView(this); 
    tv.setLayoutParams(lparams); 
    tv.setText(Html.fromHtml(string)); 
    tv.setTextColor(Color.BLACK); 
    tv.setPadding(5, 5, 5, 5); 

    return tv; 
}// BuiltTextView 

private TableRow BuildTableRow(String left, String right) 
{ 
    TableRow tr = new TableRow(this); 
    LayoutParams rowParams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
    tr.setLayoutParams(rowParams); 
    tr.setBackgroundColor(Color.RED); 
    tr.addView(BuildTextView(left)); 
    tr.addView(BuildTextView(right)); 
    return tr; 
} 

感謝。

回答

1

訣竅是擺脫LayoutParams