动态添加元素到布局

时间:2013-12-30 17:55:38

标签: android android-layout dynamic

我是开发应用程序的新手。我仍然认为这是一个基本的动作,所以如果已经有一个已经解决的线程,我会对链接没问题。但是因为我正在寻找超过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文件)时,如何添加第二个文本?赞赏的例子。

1 个答案:

答案 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。