¿Cómo agregar un botón dinámicamente en Android?

¿Cómo agregar un botón dinámicamente en Android?

Button myButton = new Button(this); myButton.setText("Push Me"); LinearLayout ll = (LinearLayout)findViewById(R.id.buttonlayout); LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); ll.addView(myButton, lp); 

Echa un vistazo a este ejemplo

prueba esto:

 for (int i = 1; i <= 20; i++) { LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); Button btn = new Button(this); btn.setId(i); final int id_ = btn.getId(); btn.setText("button " + id_); btn.setBackgroundColor(Color.rgb(70, 80, 90)); linear.addView(btn, params); btn1 = ((Button) findViewById(id_)); btn1.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Toast.makeText(view.getContext(), "Button clicked index = " + id_, Toast.LENGTH_SHORT) .show(); } }); } 

Prueba esto:

 LinearLayout ll = (LinearLayout)findViewById(R.id.layout); Button btn = new Button(this); btn.setText("Manual Add"); btn.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); ll.addView(btn); 
 for (int k = 1; k < 100; k++) { TableRow row = new TableRow(this); innerloop: for (int l = 1; l < 4; l++) { btn = new Button(this); TableRow.LayoutParams tr = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); layout.setWeightSum(12.0f); tr.weight = 0; btn.setLayoutParams(tr); btn.setTextColor(a); btn.setHeight(150); btn.setWidth(150); btn.setId(idb); btn.setText("Button " + idb); row.addView(btn); } } 

Prueba este código

  Button btn=new Button(this); btn.setId(btn); btn.setBackgroundResource(R.drawable.image); btn.setMinimumHeight(150); btn.setMinimumWidth(150); Relativelayout.addView(btn); 

prueba esto

 private void createLayoutDynamically(int n) { for (int i = 0; i < n; i++) { Button myButton = new Button(this); myButton.setText("Button :"+i); myButton.setId(i); final int id_ = myButton.getId(); LinearLayout layout = (LinearLayout) findViewById(R.id.myDynamicLayout); layout.addView(myButton); myButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Toast.makeText(DynamicLayout.this, "Button clicked index = " + id_, Toast.LENGTH_SHORT) .show(); } }); } 

Pruebe este código. Funcionará bien

 public class DynamicViewsActivity extends Activity { Button button; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_dynamic_views); ScrollView scrl=new ScrollView(this); final LinearLayout ll=new LinearLayout(this); ll.setOrientation(LinearLayout.HORIZONTAL); LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); layoutParams.setMargins(100, 500, 100, 200); scrl.addView(ll); Button add_btn=new Button(this); add_btn.setText("Click Here"); ll.addView(add_btn, layoutParams); final Context context = this; add_btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(context, App2Activity.class); startActivity(intent); } }); this.setContentView(scrl); } } 

Compruebe esto.

 LinearLayout ll_Main = new LinearLayout(getActivity()); LinearLayout ll_Row01 = new LinearLayout(getActivity()); LinearLayout ll_Row02 = new LinearLayout(getActivity()); ll_Main.setOrientation(LinearLayout.VERTICAL); ll_Row01.setOrientation(LinearLayout.HORIZONTAL); ll_Row02.setOrientation(LinearLayout.HORIZONTAL); final Button button01 = new Button(getActivity()); final Button button02 = new Button(getActivity()); final Button button03 = new Button(getActivity()); final Button button04 = new Button(getActivity()); ll_Row01.addView(button01); ll_Row01.addView(button02); ll_Row02.addView(button03); ll_Row02.addView(button04); ll_Main.addView(ll_Row01); ll_Main.addView(ll_Row02); button04.setVisibility(View.INVISIBLE); button04.setVisibility(View.VISIBLE); 

He utilizado este código (o muy similar) para agregar varias TextViews a un LinearLayout:

 // Quick & dirty pre-made list of text labels... String names[] = {"alpha", "beta", "gamma", "delta", "epsilon"}; int namesLength = 5; // Create a LayoutParams... LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.FILL_PARENT); // Get existing UI containers... LinearLayout nameButtons = (LinearLayout) view.findViewById(R.id.name_buttons); TextView label = (TextView) view.findViewById(R.id.master_label); TextView tv; for (int i = 0; i < namesLength; i++) { // Grab the name for this "button" final String name = names[i]; tv = new TextView(context); tv.setText(name); // TextViews CAN have OnClickListeners tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { label.setText("Clicked button for " + name); } }); nameButtons.addView(tv, params); } 

La principal diferencia entre esto y el código de dicklaw795 es que no establece () y re-get () el ID para cada TextView – lo encontré innecesario, aunque es posible que lo necesite para identificar más tarde cada botón en una rutina de manejador común Por ejemplo uno llamado por onClick () para cada TextView).

Pruebe el siguiente código.

 LinearLayout layout = (LinearLayout) findViewById(R.id.llayout); layout.setOrientation(LinearLayout.VERTICAL); Button btn = new Button(this); btn.setText("Button1"); layout.add(btn); btn = new Button(this); btn.setText(Button2); layout.add(btn); 

Como esto usted agrega los botones según sus requisitos.

Pruebe este código:

 LinearLayout layout = (LinearLayout) findViewById(R.id.layout); Button button = new Button(getApplicationContext()); LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); button.setText("New Button"); button.setLayoutParams(layoutParams); layout.addView(button); 

¡De hecho agrego al archivo de disposición de xml cualquier cosa que pueda ser usada! A continuación, desde el código fuente de la actividad específica obtener el objeto por su id y yo "jugar" con el método de visibilidad.

Aquí hay un ejemplo:

((Spinner)findViewById(R.id.email_spinner)).setVisibility(View.GONE);

 Button myButton = new Button(this); myButton.setId(123); myButton.setText("Push Me"); LinearLayout ll = (LinearLayout)findViewById(R.id.buttonlayout); LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); ll.addView(myButton, lp); myButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Toast.makeText(DynamicLayout.this, "Button clicked index = " + id_, Toast.LENGTH_SHORT) .show(); } }); 

Si desea añadir dinámicamente botones, pruebe lo siguiente:

 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); for (int i = 1; i <= 5; i++) { LinearLayout layout = (LinearLayout) findViewById(R.id.myLinearLayout); layout.setOrientation(LinearLayout.VERTICAL); Button btn = new Button(this); btn.setText(" "); layout.addView(btn); } } 
 public void add_btn() { lin_btn.setWeightSum(3f); for (int j = 0; j < 3; j++) { LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); params1.setMargins(10, 0, 0, 10); params1.weight = 1.0f; LinearLayout ll; ll = new LinearLayout(this); ll.setGravity(Gravity.CENTER_VERTICAL); ll.setOrientation(LinearLayout.HORIZONTAL); ll.setLayoutParams(params1); final Button btn; btn = new Button(DynamicActivity.this); btn.setText("A"+(j+1)); btn.setTextSize(15); btn.setId(j); btn.setPadding(10, 8, 10, 10); ll.addView(btn); lin_btn.addView(ll); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if(v.getId()==0) { txt_text.setText("Hii"); }else if(v.getId()==1) { txt_text.setText("hello"); }else if(v.getId()==2) { txt_text.setText("how ru"); } } }); } } 

En mainactivity.xml escriba:

 <Button android:id="@+id/search" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Search" android:visibility="invisible"/> 

En main.java escribe:

 Button buttonSearch; buttonSearch = (Button)findViewById(R.id.search); buttonSearch.setVisibility(View.VISIBLE); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.