在每个按钮上创建一个文本视图点击

在每个按钮上创建一个文本视图点击

问题描述:

我想创建一个按钮点击的文本视图,这样每次按下按钮时都会创建一个新的文本视图。在每个按钮上创建一个文本视图点击

问题:我只得到单个textview创建,因为当我再次按下按钮时,没有创建任何东西。

代码:

//In a class I defined a button 
Button button; 

//I set the button to on click listener 

button.setOnClickListener(new View.OnClickListener{ 
@override 
public void onClick(View view){ 
//now I want to create text view dynamically 
TextView textview= new TextView(myactivity.this); 
textview.setText("new text"); 

//the problem is that this method helps me make only one text I want to 
// create text view each time the button pressed. 


} 
}); 

感谢

编辑:我没有忘记设置在布局视图,并给予它的参数,我不能发现问题,我产生一个TextView的不管我做您要在XML中添加的TextView

+0

你做错了,你只是更换旧一个 –

+0

@Divyesh的TextView您能不能给一个解决方案吗? –

+0

等待一段时间 –

先加布局:

 <LinearLayout 
       android:id="@+id/anything" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical"/> 
     </LinearLayout> 

现在活动:

 LinearLayout lin; 
     lin = (LinearLayout) findViewById(R.id.anything); 
     lin.removeAllViews(); 

button.setOnClickListener(new View.OnClickListener{ 
@override 
public void onClick(View view){ 

    TextView txtName = new TextView(MainActivity.this); 
    txtName.setId(28); 
    txtName.setText("new text"); 

    lin.addView(txtName); 

} 
}); 

目前,您的代码只是用一个新的替换旧的textview。

要解决此问题,请从您的layout.xml中获取要在其中显示TextView的布局。

那么你的TextView添加到布局是这样的:

LinearLayout mLayout = (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(MainActivity.this); 
     tv1.setText("Show Up"); 
     mLayout.addView(tv1); 
     } 
}); 
+1

你为什么使用getApplicationContext()而不是Activity.this。 –

+0

谢谢,现在修复它。 – Aryan

创建XML,

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" > 
     <LinearLayout 
      android:id="@+id/llTextviews" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:orientation="vertical" > 
     </LinearLayout> 
     <Button android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Hello, I am a Button" /> 
    </LinearLayout> 
</ScrollView> 

在Java类,

LinearLayout layout; 
LinearLayout linearlayout = new LinearLayout(ACTIVITY); 

LayoutParams LLParams = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT_PARENT); 
linearlayout .setLayoutParams(LLParams); 

layout = (LinearLayout)findViewById(R.id.llTextviews); 

button.setOnClickListener(new View.OnClickListener{ 
@override 
public void onClick(View view){ 

    layout.removeAllViews(); 

    TextView txtName = new TextView(MainActivity.this); 
    txtName.setId(28); 
    txtName.setText("new text"); 

    linearlayout.addView(txtName); 
    layout.addView(linearLayout); 

    } 
}); 

为了动态生成视图ID使用表格API 17

generateViewId()

像这样

@Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       EditText editText = new EditText(MainActivity.this); 
       editText.setId(editText.generateViewId()); 
       editText.setHeight(50); 
       editText.setWidth(50); 
       ll.addView(editText); 

      } 

private EditText editText(String hint) { 
       EditText editText = new EditText(this); 
       editText.setId(Integer.valueOf(hint)); 
       editText.setHint(hint); 
       editTextList.add(editText); 
       return editText; 
      }