Spanish ImageView como botón

tomky

Active Member
Licensed User
Hola.
¿Cómo se hace para que una ImageView se comporte como un botón? ¿Cambie de color o de imagen al hacer click sobre ella y vuelva a su color o imagen original?
Gracias.
 

rscheel

Well-Known Member
Licensed User
Longtime User
Con la propiedad Click del ImageView puedes hacerla como un botón, pero si quieres darle mas efecto puedes colocare una imagen a un botón y asignarle una imagen para cada evento.
 

aviario

Active Member
Licensed User
Longtime User
Yo lo hago de la siguiente Forma:
1º EN el designer pongo el ImageView le asigno la imagen que quiero que muestre y pongo un label con el texto que quiero que muestre
2º Coloco ImageView en la posición que quiero ya por código

' Boton Datos Concurso
bt1.RemoveView
MiPanel.AddView(bt1, (Pos1-bt1.Width)/2 , 90dip, bt1.width , bt1.Height)
' Boton Grupos Asignados
bt2.RemoveView
MiPanel.AddView(bt2, Pos1+(Pos1-bt2.Width)/2 , 90dip, bt2.width , bt2.Height)

' Boton Enjuiciamiento
bt3.RemoveView
MiPanel.AddView(bt3, (Pos1-bt3.Width)/2 ,bt1.Top+bt1.Height+25dip, bt3.width , bt3.Height)

' Boton Salir
bt4.RemoveView
MiPanel.AddView(bt4, Pos1+(Pos1-bt4.Width)/2 , bt3.Top , bt4.width , bt4.Height)

Cuando Hago el click en la imagen llamo a la rutina Pon_Boton para que haga la simulación que se ha pulsado

Sub Bt1_Click

Pon_Boton(bt1)

StartActivity("datosconcurso")

End Sub


Sub Pon_Boton(Panel As Panel)

' Con esto simulo que se ha pulsado el botón

Dim gd1 As GradientDrawable, col(2) As Int
col(0) = Colors.RGB(82,81,81)
col(1) = Colors.RGB(172,168,168)

gd1.Initialize("BOTTOM_TOP", col)
gd1.CornerRadius = 25dip
Panel.Background=gd1

' Pongo un tiempo para que se vea el botón pulsado
Dim Ti As Long
Ti = DateTime.Now + 100
Do While DateTime.Now < Ti
DoEvents
Loop

' Con esto dejo el botón en su estado normal

col(0) = Colors.RGB(172,168,168)
col(1) = Colors.RGB(82,81,81)
gd1.Initialize("BOTTOM_TOP", col)
gd1.CornerRadius = 25dip
Panel.Background=gd1


End Sub
 
Last edited:

tomky

Active Member
Licensed User
Gracias rscheel. ¿Puedes especificar más?

Gracias avario. ¿Lo que dices es para un botón o para un ImageView?

Ahora mismo solamente puedo cambiarla una vez con:

B4X:
Poner en Layout imgv1.

Private imgv1 As ImageView

Sub imgv1_Click   
    Dim img As BitmapDrawable
    img.Initialize(LoadBitmap(File.DirAssets,"nombreimg.png"))
    imgv1.Background = img
End Sub
Saludos.
 

mczubel

Member
Licensed User
Longtime User
con imageview_click generas el evento y con un select case asocias una variable según el valor de la variable es la imagen que muestras.
Con el evento click vas haciendo correr la variable del select case.
así lo hago yo y básicamente bajo la imagen que quiero y le modifico en paint.
Puedes asociar select case a otros eventos y entonces el image cambia asociado a ellos por ejemplo serial_connected device_found etc
 
Top