Pagina Principal

Alexandre Castilla

Hi, my name is xxxx Lorem ipsum dolor sit amet, consectetuer adipiscing elit.

Perfil

Welcome to my online portfolio. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. I'm taking on freelance work at the moment. Want some help building your software?

WebScript1.es.tl

Creación dinámica de botones

Como crear Botones dinámicos con Android Studio

Bueno como el titulo indica hoy veremos como crear botones dinámicos es decir mediante código y no por diseño [Vista].

Lo primero que tenemos que hacer es crear un nuevo proyecto o todo caso tenerlo ya configurado,dentro de dicho proyecto hay que tener una vista en la cual se agregaran los botones.

contenedor de los botones

Como podrán apreciar el proyecto solo cuenta con una vista (Actividad principal) , en dicha vista se encuentra un LinearLayout el cual es un contenedor en la que podremos colocar los botones de manera dinámica, para eso debemos colocarle una id para poder manejar lo  sin problema.Una ves echo esto vamos a crear una variable de tipo LinearLayout en la clase de la actividad como se muestra en la imagen , luego inicializar la variable haciendo referencia al recurso (ID) que pertenece.

Luego tendremos que crear un método el cual nos permita agregar los botones dentro del contenedor (LinearLayout) , el cual pedirá 2 parámetros una de tipo entero (Cantidad de elementos) y otra de tipo LinearLayout (Contenedor en donde los botones estarán) .

    
    
public void agregarBotones(int elementos, LinearLayout contenedor){
	 for (int i= 0; i<elementos; i++){
	 	 //creando un objeto de la clase button
		 Button boton = new Button(getApplicationContext());
		 //Personalizando botones
		 boton.setText("Boton nr°: "+(i+1));
		 contenedor.addView(boton);
	 }
 }

    

Como pueden apreciar el método es simple , solamente utilizamos un for el cual repetirá las instrucciones el numero de veces que nosotros lo enviemos por parámetro al método, dentro del for crearemos un objeto de la clase Button el cual pide como parámetro el contexto el cual nosotros enviaremos utilizando el método getApplicationContext(), este método funciona si la clase esta extendía asía AppCompatActivity caso contrario nosotros tendríamos que enviar el contexto como parámetro, luego utilizamos el objeto y atravez del método setText() enviamos el texto que queramos que tenga.Luego el método creado tendremos que llamarlo dentro del método onCreate y enviarles los parámetros que requiera.

Luego de haber echo todo esto emulamos la aplicación y vemos el resultado: 

Si queremos agregarle mas cosas al botón como iconos , padding , margin , eventos etc. tendríamos que utilizar el objeto del botón y utilizar los métodos que nos ofrece la clase Button Botones Android Studio .

Ejemplo: Ahora vamos añadir eventos a los botones los cuales mostraran un TOAST (avisos o mensajes).

Para eso necesitaremos un evento de implementación anónima el cual ejecutara todos los botones

    
    
	private View.OnClickListener misEventosButton = new View.OnClickListener() {
		 public void onClick(View v) {
		 	//aca castemos la variable v (View) para que este se convierta en un boton
		 	Button objBoton = (Button) v;
		 	Toast.makeText(getApplicationContext(),"Se preciono el "+objBoton.getText(),Toast.LENGTH_SHORT).show();
		 }
	 };

    

Este evento, ara que todo los botones muestren un mensaje o aviso cada vez que se presione alguno de ellos.

y así podemos agregar un sin fin de cosas a los botones que se creen.

Resultado final:

 

    
    

	import android.graphics.Color;
	import android.graphics.drawable.Drawable;
	import android.support.v4.content.ContextCompat;
	import android.support.v7.app.AppCompatActivity;
	import android.os.Bundle;
	import android.view.View;
	import android.view.ViewGroup;
	import android.widget.Button;
	import android.widget.LinearLayout;
	import android.widget.Toast;

	public class principal extends AppCompatActivity {

	 LinearLayout lContenedor;

	 @Override
	 protected void onCreate(Bundle savedInstanceState) {
		 super.onCreate(savedInstanceState);
		 setContentView(R.layout.activity_principal);
		 lContenedor = findViewById(R.id.lContenedor);
		 agregarBotones(5,lContenedor);
	 }


	 public void agregarBotones(int elementos, LinearLayout contenedor){
		 for (int i= 0; i<elementos; i++){
			 Button boton = new Button(getApplicationContext());
			 //Personalizando botones
			 boton.setText("Boton nr°: "+(i+1));
			 int numero = (int) (Math.random() * 12) + 1;
			 //enviar un color de fondo
			 boton.setBackgroundColor(PASTEL_COLORS[numero]);
			 //Enviar un margin a los botones
			 LinearLayout.LayoutParams parametros = new LinearLayout.LayoutParams(
			 /*width*/ ViewGroup.LayoutParams.MATCH_PARENT,
			 /*height*/ ViewGroup.LayoutParams.WRAP_CONTENT
			 );
			 parametros.setMargins(5, 5, 5, 5);
			 boton.setLayoutParams(parametros);
			 //aca implementamos el evento
			 boton.setOnClickListener(misEventosButton);
			 contenedor.addView(boton);
		 }
	 }


	 private View.OnClickListener misEventosButton = new View.OnClickListener() {
		 public void onClick(View v) {
		 	//aca castemos la variable v (View) para que este se convierta en un boton
		 	Button objBoton = (Button) v;
		 	Toast.makeText(getApplicationContext(),"Se preciono el "+objBoton.getText(),Toast.LENGTH_SHORT).show();
		 }
	 };

	 //Array de colores el cual utilizaremos para evniar fondos al boton
	 public static final int[] PASTEL_COLORS={
		 Color.rgb(64,89,120),
		 Color.rgb(149,165,124),
		 Color.rgb(217,184,162),
		 Color.rgb(64,89,120),
		 Color.rgb(191,134,134),
		 Color.rgb(3, 169, 244),
		 Color.rgb(233, 30, 99),
		 Color.rgb(103, 58, 183),
		 Color.rgb(63, 81, 181),
		 Color.rgb(33, 150, 243),
		 Color.rgb(0, 150, 136),
		 Color.rgb(255, 193, 7)
	 };

}

    




WebScript1
Hoy habia 1 visitantes (1 clics a subpáginas) ¡Aqui en esta página!
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis