我在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);
我该如何解决?
答案 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写的一样。