Spanish Cambiar imagen a un botón

Santiago Russo

Member
Licensed User
Buenas, estoy intentando cambiar una imagen a un botón. Este cambio se debe a que cambió alguna condición. Y, por supuesto, también tengo que desactivar el botón para que no puedan presionar sobre él.
¿Cómo realizo esta tarea? Tengo un pequeño ejemplo de cómo estoy haciendo eso.

B4X:
Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.

    Private pnlSuperior As Panel
    Private TituloTally As Label
    Private scrollTests As ScrollView
    Private pnlBotones As Panel
    Private btnTests As Button
    Private btnPerfil As Button
    Private btnTrabajos As Button
    Private btnCerrarSesion As Button
'    Private lblTextoBotones As Label
    Private imvImage As ImageView
    
End Sub

Sub Activity_Create(FirstTime As Boolean)
'16pf
    txt.Initialize("lbl16pf")
    txt.Text = "Test 16pf"
    txt.TextSize = 28
    txt.TextColor = Colors.White
    txt.Typeface = fuente
    bm.InitializeSample(File.DirAssets, "FondoTestActivo.png", 45%x, 45%y)
    imvImage.Initialize("img16pf")
    imvImage.Bitmap = bm
    bm.InitializeSample(File.DirAssets, "FondoTestActivo.png", 45%x, 45%y)
'3%y es el espaciado entre tests
    scrollTests.Panel.AddView(imvImage, 1%x, 23%y + 3%y, 100%x, 23%y)
    scrollTests.Panel.AddView(txt, 15%x, 28%y, 25%x, 15%y)

Aquí...
B4X:
' ...
 bm.InitializeSample(File.DirAssets, "FondoTestActivo.png", 45%x, 45%y)
    imvImage.Initialize("img16pf")
    imvImage.Bitmap = bm
    bm.InitializeSample(File.DirAssets, "FondoTestActivo.png", 45%x, 45%y)
Cuando ocurre cierta condición, la imagen que hay que poner es "FondoTestInactivo.png" y imvImage.Enable = False, o algo por el estilo.
No se si estoy bien encaminado. Pero bueno, espero se entienda y me puedan orientar.

Gracias.
 

drgottjr

Expert
Licensed User
Longtime User
"cambiar una imagen a un botón" ¿qué botón? yo no veo ningúno. además, supongo que
quieres decir "cambiar una imagen de un imageview al oprimir un botón", y no "cambiar la
imagen de un botón", que tambien es posible. bien, yo haría lo siguiente:

1) declarar 2 bitmap. llamámoslos bitmap1 y bitmap
2) declarar un imageview
3) fija bitmap1 como imageview.bitmap (como lo has hecho ya).
4) declarar un botón
5) inicializar este botón con una función (o, sea, sub): botón.initialize("algunsub")
6) al oprimir el botón, la función cambia la imagen (bitmap) del imageview, cambiando
bitmap1 por bitmap2

B4X:
dim boton as button
boton.initialize("algunsub")
activity.addview(boton, ...)

ahora, al oprimir el botón:

B4X:
sub algunsub_click
   imgview.bitmap = bitmap2
   imgview.invalidate     ' no iría mal este paso
end sub

he dejado algunos pasos. ¿es esto lo que querías decir?
 
Top