2014-01-11 102 views
0

好的,所以我試圖在每次點擊按鈕時以編程方式將TableRows插入TableLayout。這些行中的每一行都包含設置爲某個字符串的TextView。我的問題是,雖然TableRow插入成功,但TextView中本身在TableRow內的文本不會顯示出來。以編程方式將TableRows插入TableLayout - TableRow內部的TextView將不會顯示

下面是我在做什麼:

//prepare TextView to put inside a TableRow 
    TextView text = new TextView(MyClass.this); 
    text.setText(someString); 
    text.setTextSize(15); 
    text.setTextColor(Color.parseColor("#FF9900")); 
    text.setLayoutParams(new LayoutParams 
      (LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 


    //Prepare TableRow to be inserted 
    TableRow row = new TableRow(MyClass.this); 
    row.addView(text); 
    row.setPadding(4,4,4,4); 
    row.setGravity(Gravity.CENTER); 
    row.setLayoutParams(new LayoutParams 
      (LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT)); 

    //add row to the table 
    someTableLayout.addView(row); 

結果: 插入了行,但我無法看到的文本(我知道行插入,因爲我可以看到之間的分界線每一行)。我猜這跟LayoutParams有什麼關係?我可能忽視的東西很愚蠢......但我不知道......

截圖我點擊Roll應插入一行以字符串/ TextView的經過: enter image description here

「開始通過滾動「TextView是我通過XML文件輸入的第一行。它顯示正常,但以編程方式插入的行不

+0

如何使你的UI樣子?你能發佈你當前用戶界面的截圖嗎? –

回答

1

首先這是你有一個TextView具有高度match_parent與高度wrap_content一個tablerow所以請TextView高度WRAP_CONTENT爲好。

其次分配適當的LayoutParams爲前:

TextView text = new TextView(MyClass.this); 
text.setText(someString); 
text.setTextSize(15); 
text.setTextColor(Color.parseColor("#FF9900")); 
text.setLayoutParams(new TableRow.LayoutParams 
     (LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 


//Prepare TableRow to be inserted 
TableRow row = new TableRow(MyClass.this); 
row.addView(text); 
row.setPadding(4,4,4,4); 
row.setGravity(Gravity.CENTER); 
row.setLayoutParams(new TableLayout.LayoutParams 
     (LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT)); 

//add row to the table 
someTableLayout.addView(row); 
+0

謝謝!太棒了。另外,爲什麼我們必須使用適當的LayoutParams?反正不會直接使用'LayoutParams'? – ujvl

+0

每個佈局參數都不同,它定義了與父佈局相關的屬性。你可以使用ViewGroup.LayoutParams,但是如果你想要一些特定的屬性在linearlayout中應用像weigth,你應該有適當的layoutparam –

0

嘗試了這一點:

text.setLayoutParams(new LayoutParams 
      (LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 


text.setLayoutParams(new LayoutParams 
      (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
相關問題