Иногда в приложении, описанного через XML разметку нужно создавать новые элементы программно. В статье примеден пример такого приложения.
Задача. В окне приложения есть одна кнопка, при нажатии на которую появляется еще одна кнопка. При нажатии на новые кнопки они должны удаляться.
Решение.
XML разметка.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linearLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="16dp" android:paddingRight="16dp" android:orientation="vertical" > <Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Добавить кнопку" /> </LinearLayout> |
Java код активности.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
package org.harrix.buttoncreatebutton; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; public class MainActivity extends AppCompatActivity { private Button button; private LinearLayout linearLayout; private final int USERID = 6000; private int countID; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button); linearLayout = (LinearLayout) findViewById(R.id.linearLayout); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Button b = new Button(getApplicationContext()); b.setText("Удалить данную кнопку №" + Integer.toString(countID + 1)); b.setLayoutParams( new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT) ); b.setId(USERID + countID); b.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { linearLayout.removeView(v); } }); linearLayout.addView(b); countID++; } }); } } |
Получим вот это.