Spanish crear un numero indeterminado de Layout en tiempo de ejecucion

deneus

Member
Licensed User
Longtime User
Tengo la siguiente consulta.
Como crear un numero indeterminado de Layout en tiempo de ejecucion desde 0 a partir de una variable numerica que nos da el numero total de Layout a crear y en cada Layout crear elementos como botones y sus repectivos eventos click.
Existe algun ejemplo de esto?
Gracias.
 

jota

Active Member
Licensed User
Longtime User
Yo diria que no puedes crear Layouts en tiempo de ejecución, lo que si puedes hacer es crear objetos panel y poner botones, etiquetas, etc ... en ellos y luego jugar con la propiedad visible true o false para cargar el que te interese.
 

josete

Member
Licensed User
Longtime User
Refloto este post porque me interesa el tema de crear views en tiempo de ejecucion ,es decir imaginemos que en la app tengo una lista de controles y al elegir por ejemplo un boton,un slider,etc lo cree en un panel (por ejemplo) .¿es factible? ¿se podria programar de alguna manera el evento click de ese boton creado o el evento change de ese slider?
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Josete

Te pongo un pequeño ejemplo, el resto de controles es lo mismo

B4X:
Dim boton1 As Button
boton1.Initialize("Boton1")
boton1.Tag = 1 ' el texto que quieras
boton1.Text = "Texto del botón 1"
Activity.AddView(boton1,left,top,anchoboton,altoboton) ' lo incrustamos en el activity


Dim Tapa As Panel
Tapa.Initialize("") ' "" = no queremos evento
Tapa.Color = Colors.Black ' negro
Tapa.Visible = False ' por si quieres que no se vea hasta que tu lo hagas
Activity.AddView(Tapa,0,0,100%x,100%y)  ' lo incrustamos en el activity y lo hacemos igual de grande que el activity

' vamos a crear 5 botones dentro del panel
for n = 1 to 5
  Dim boton2 As Button
  boton2.Initialize("Boton2") ' Inicializamos con el nombre del evento Boton2
  boton2.Tag = n ' para saber el indice en el evento
  boton2.Text = "Texto del botón " & n
  Tapa.AddView(boton2,left,top,anchoboton,altoboton) 'lo incrustamos en el panel llamado Tapa
next 

' una etiqueta en la Tapa
dim Label1 as label
label1.Initialize("") ' "" = no queremos evento
label1.Text = "Texto del label"
label1.TextColor = Colors.White
label1.Color=Colors.Blue
label1.TextSize = 20
Tapa.AddView(label1,left,top,ancholabel,altolabel) 'lo incrustamos en el panel llamado Tapa

'.................   
'.................
'.................
'.................
  
      
  
Sub Boton1_Click

    Dim b As Button
    b = Sender

    log("Texto del boton 1" & b.Text)
  
end sub
  
  
Sub Boton2_Down
   dim indice as int

    Dim b As Button
    b = Sender
    indice=b.tag  ' En el tag pusimos el indice del boton

    log("Texto del boton 2 en el Down" & b.Text)
    log ("Tag del botón 2  en el Down" & b.Tag)
  
  
end sub


Saludos
 
Last edited:
Top