Android - добавить текстовое представление в макет при нажатии кнопки - PullRequest
15 голосов
/ 03 августа 2011

Так что сейчас у меня есть текстовое поле с кнопкой (добавить +) под ним.

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

Я не хочу просто делать текстовое представление невидимым, а затем видимым при нажатии, потому что я хотел бы, чтобы они могли добавлять более одного текстового представления к любому тексту, который они вводят.

1 Ответ

33 голосов
/ 04 августа 2011

Этот код содержит то, что вы хотите. (Вид показывает EditText и Button, после нажатия на кнопку текст будет добавлен в LinearLayout)

    private LinearLayout mLayout;
private EditText mEditText;
private Button mButton;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mLayout = (LinearLayout) findViewById(R.id.linearLayout);
    mEditText = (EditText) findViewById(R.id.editText);
    mButton = (Button) findViewById(R.id.button);
    mButton.setOnClickListener(onClick());
    TextView textView = new TextView(this);
    textView.setText("New text");
}

private OnClickListener onClick() {
    return new OnClickListener() {

        @Override
        public void onClick(View v) {
            mLayout.addView(createNewTextView(mEditText.getText().toString()));
        }
    };
}

private TextView createNewTextView(String text) {
    final LayoutParams lparams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    final TextView textView = new TextView(this);
    textView.setLayoutParams(lparams);
    textView.setText("New text: " + text);
    return textView;
}

И xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/linearLayout">
 <EditText 
    android:id="@+id/editText"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
 />
<Button 
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Add+"
/>

...