android:如何在Button Click上创建动态视图元素

时间:2011-08-07 07:06:13

标签: android textview

这看起来是一个简单的问题,但我从2天开始就在苦苦挣扎。 我想在Button Click上动态创建textView。 这是代码的样本

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.game_main);
Button bn = (Button) findViewById(R.id.button2);
bn.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {
       TextView tv1 = new TextView(getApplicationContext());
       tv1.setText("Show Up");
       layout.addView(tv1);
        }   
});
}

我可以看到按钮,但在点击按钮时,我无法在布局中看到文本视图。 代码中的任何问题?

3 个答案:

答案 0 :(得分:1)

根据我的意见,

布局没有定义,在布局上尝试findViewById然后在其上设置子元素,然后它应该工作

答案 1 :(得分:1)

您好我的earlier post,它包含示例代码。 (在UI中有一个edittext和一个按钮,单击该按钮后,新的textview将显示输入的文本。) 我认为这对你有帮助。

我用工作代码更新了答案。

仅在onCreate()方法中的代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.dinamic_textview);
    final LinearLayout layout = (LinearLayout) findViewById(R.id.root_layout);
    final Button bn = (Button) findViewById(R.id.btnaddnewtext);
    bn.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            TextView tv1 = new TextView(v.getContext());
            tv1.setText("Show Up");
            layout.addView(tv1);
        }
    });
}

布局xml:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:id="@+id/root_layout">
    <Button 
        android:id="@+id/btnaddnewtext"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Add"  
    />
</LinearLayout>

答案 2 :(得分:0)

获取您希望TextView显示在layout.xml中的布局。

然后将TextView添加到该布局中,如下所示: -

LinearLayout myLayout = (LinearLayout)findViewById(R.id.mLayout);
Button bn = (Button) findViewById(R.id.button2);
bn.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {
       TextView tv1 = new TextView(getApplicationContext());
       tv1.setText("Show Up");
       myLayout .addView(tv1);
        }   
});