2012-10-11 77 views
3

這是一個XML LinearLayout linlayout.xml編程添加TextViews到XML佈局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/mylinear" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical"> 
</LinearLayout> 

我想補充TextViews到此佈局編程,因爲添加的TextViews的數量可以是不同的,有時。

下面是活動代碼:

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.linlayout); 

    LinearLayout linear=(LinearLayout) findViewById(R.layout.mylinear); 
    TextView [] txt =new TextView[3]; 

    for(int i=0;i<txt.length;i++) 
    { 
     txt[i]=new TextView(this); 
     txt[i].setText("text "+i); 
     txt[i].setLayoutParams(new 
     LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 
     linear.addView(txt[i]); 
    } 
} 

LogCat不顯示錯誤,但TextViews當我運行的應用程序不會顯示。

我嘗試把線:

setContentView(R.layout.linlayout); 

末,該for後,但不起作用。

+0

您是否檢查文本視圖文本的顏色是否與佈局的背景顏色不同? – Paul

+0

通過刪除TextView來檢查txt = new TextView [3]; – mukesh

+0

TextView txt = new TextView [3];通過TextView更改此行txt = new TextView [this]; –

回答

4

使用此:

TextView [] txt = new TextView[3]; 

for (int i=0; i<txt.length; i++) { 
    txt[i] = new TextView(YourActivity.this); 
    txt[i].setText("text " + i); 
    txt[i].setLayoutParams(newLayoutParams 
    (LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 
    linear.addView(txt[i]); 
} 
+0

在我的代碼中,這是好的,當我寫這篇文章時,只是一個錯誤,我編輯它,對不起。 – vpl

+0

我複製了你的代碼並粘貼到我的應用程序中,它工作正常。 –

+0

你試試我的更新答案它有效100%。 –

1

這將是最好使用一個ListView。順便說一下,您是否將佈局的方向更改爲垂直方向?但如果你需要我,我建議這個: 我想你有一定的大小的元素。

final int size = 3; // replace with the size of your element 
LinearLayout linear = (LinearLayout) findViewById(R.layout.mylinear); 

for(int i=0;i<size;i++){ 
    final TextView textView = new TextView(this); 
    textView.setText("text "+i); 
    textView.setLayoutParams(new LayoutParams(
    LayoutParams.FILL_PARENT, 
    LayoutParams.WRAP_CONTENT)); 

    linear.addView(textView); 
}