将TextView添加到LinearLayout

时间:2015-03-12 12:50:05

标签: android textview android-linearlayout

我在xml中定义了textview,并尝试以编程方式将textview添加到linearlayout 10次。

这是我的代码。

public class MainActivity extends ActionBarActivity {

    private TextView htext;
    private LinearLayout linearlayout;

    public void init()

    {
        linearlayout = (LinearLayout) findViewById(R.id.itemLayout0);
        htext = (TextView) findViewById(R.id.hText0);
    }

    private void addtext() {

        for (int i = 1; i <= 10; i++) {

            htext.setText(i + "");
            linearlayout.addView(htext);
        }

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        init();
        addtext();
    }
}

和Xml

<LinearLayout 
android:id="@+id/itemLayout0"
android:layout_width="match_parent"
android:layout_height="89dp"
android:background="@drawable/title_background"
android:clickable="true"
android:orientation="vertical" >

<TextView
    android:id="@+id/hText0"
    android:layout_width="100sp"
    android:layout_height="100sp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:text="No data"
    android:textSize="15dp"
    android:textStyle="bold" />


     </LinearLayout>

不行不通。我认为问题是

linearlayout.addView(htext); 

我该如何解决?

2 个答案:

答案 0 :(得分:6)

动态创建TextView

 TextView htext =new TextView(this);
 htext.setText("Test");
 htext.setId(5);
 htext.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));

然后添加到布局

 linearlayout.addView(htext);

答案 1 :(得分:0)

问题在于,您添加的TextView已经在View层次结构中并且已设置了布局参数,因此当您调用linearLayout.addView(htext);时,它会引用已经是TextView的{​​{1}}添加在.xml文件中。

您需要创建TextView的新实例,并使用addView()方法将其添加到View层次结构中,就像M D写的一样。