我是开发应用程序的新手。我仍然认为这是一个基本的动作,所以如果已经有一个已经解决的线程,我会对链接没问题。但是因为我正在寻找超过2个小时,所以无论如何我要问:
每次用户点击按钮时,我都希望动态地为我的布局添加一个元素。
到现在为止我有这个:
XML(R.layout.game.xml)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/submit_choice"
android:onClick="submitChoice"/>
</LinearLayout>
爪哇
public void submitChoice(View view)
{
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText("text");
LinearLayout ll = new LinearLayout(this);
ll.addView(View.inflate(ll.getContext(), R.layout.game, null));
ll.addView(textView);
setContentView(ll);
}
由于XML文件没有改变,它只能工作一次。
那么当用户第二次点击按钮(不更改XML文件)时,如何添加第二个文本?赞赏的例子。
答案 0 :(得分:1)
问题来自这一行,每次都重新创建整个布局:
LinearLayout ll = new LinearLayout(this);
您应该在setContentView(ll)
函数之外定义它并submitChoice
。然后点击仅创建并添加textView
,然后拨打ll.invalidate();
以查看更改。
类似的东西:
LinearLayout ll;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game);
ll = (LinearLayout) findViewById(R.id.ll_game);
}
// More code...
public void submitChoice(View view) {
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText("text");
ll.addView(textView);
ll.invalidate();
}
其中ll_game
是您必须在xml中为LinearLayout
设置的ID。