OnClick of Button дополнительные представления должны быть добавлены во время выполнения в макете, но я не могу этого сделать - PullRequest
1 голос
/ 22 февраля 2011

Я хочу добавить взгляды по нажатию кнопки.Мой экран имеет текстовое представление и текст редактирования и кнопку «Добавить еще».по нажатию кнопки другой набор текстового представления и редактирования текста должен быть добавлен к экрану.Я также планирую добавить представление прокрутки, как только мой экран увеличится.Мой фрагмент кода выглядит следующим образом:

   button.setOnClickListener(new OnClickListener() {  
        @Override  
    public void onClick(View v) {  
        text.setText("hello how are you?");  //this is just an example, I may want to add lot more here.
    linearLayout.addView(text);  
    setContentView(linearLayout);  
        }  

Я знаю, что мне не хватает чего-то очень простого, но я не знаю, что это такое.: (
Пожалуйста, помогите.

Ответы [ 3 ]

0 голосов
/ 22 февраля 2011

Вы должны сначала создать новый TextView и EditText добавить его к linearLayout, используя linearLayout.addView().Нет необходимости звонить setContentView(), вы, вероятно, уже добавили его.

0 голосов
/ 11 мая 2014

Это поможет вам

В вашем XML-файле

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/myMainRelativeLayout"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<Button
    android:id="@+id/btnAdd"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="47dp"
    android:text="Add Button" />

И ваш Java-файл, как

public class MainActivity extends Activity implements
    android.view.View.OnClickListener {

Button btnAdd;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btnAdd = (Button) findViewById(R.id.btnAdd);
    btnAdd.setOnClickListener(this);

}

@Override
public void onClick(View v) {
    if (v.getId() == R.id.btnAdd) {
        RelativeLayout rl = (RelativeLayout)findViewById(R.id.myMainRelativeLayout);
        Button btn = new Button(this);
        btn.setId(1234);
        btn.setText("Add Button Runtime");
        btn.setOnClickListener(this);
        rl.addView(btn);
    }
    if(v.getId() == 1234)
    {
        Toast.makeText(getApplicationContext(), "This is Your New Button", Toast.LENGTH_LONG).show();

    }
}

}

Это просто пример, вы можете добавить любой вид, подобный этому

0 голосов
/ 22 февраля 2011

Прежде всего, вам нужно инициализировать каждый TextView со ссылкой на контекст. Итак, в вашем onClick, учитывая, что он находится в MyActivity.java:

public void onClick(View v) {
  TextView text = new TextView(this);
  text.setLayoutParams(new LayoutParams(WRAP_CONTENT, WRAP_CONTENT); // Or what you decide
  text.setText("Your text");
  linearLayout.addView(text);
}

Во-вторых, учитывая, что у вас есть вызов setContentView в onCreate, который также добавляет ваш линейный вывод в представление, вам не нужно вызывать setContentView (linearLayout) каждый раз, когда нажимается кнопка.

...