Spanish Uso De Scrollview

raptorlecter

Member
Licensed User
Longtime User
A ver, sigo con las preguntas (sería genial que el manual, además de en castellano, estuviese mejor explicado).

He creado un panel que contiene un ScrollView, y ahora quiero que dentro de ese ScrollView se meta otro panel que tengo aparte.

He mirado varios ejemplos, pero no logro que funcione. ¿Alguien me lo puede explicar? Creo que es el Scroll más sencillo que se puede hacer, pero me da error en el dispositivo, no en la compilación.

Gracias de nuevo.
 

jota

Active Member
Licensed User
Longtime User
Hola, lo que quieres hacer es posible, te pongo un ejemplo simple.

Dim sv As ScrollView
Dim p As Panel

sv.Initialize(1000)
Activity.AddView(sv,0,0,100%x,100%y)
sv.Panel.Color = Colors.Red

p.Initialize("")
sv.Panel.AddView(p,10,10,100%x-10,100%y-10)

p.Color=Colors.Yellow
 

raptorlecter

Member
Licensed User
Longtime User
Lo he probado y funciona, pero funciona a medias. Se ve un panel moviendose dentro de un espacio limitado.

Dentro del Panel hay una serie de contenido, labels y imageview, y estos no aparecen.

¿Como logro que se vean?

Y otra cosa. El scrollview lo creo al pulsar un boton, por lo que cada vez que se pulsa se crea una y otra vez. ¿Como se elimina la existencia o actividad de un scrollview?
 
Last edited:

jota

Active Member
Licensed User
Longtime User
Buenas, seria bueno ver el codigo. Pero ten en cuenta que una vez creas el panel y lo metes dentro del panel del scrollview el funcionamiento debe de ser igual que si estubiera alojado en la actividad. Para eliminar todos los objetos del panel puedes usar este bucle, suponiendo que p es el panel.

For b = 0 To p.NumberOfViews -1
p.GetView(b).RemoveView
Next

y para borrar el panel p.RomeveView.

Aunque tambien puedes cambiar la propiedad del panel a visible a true o false y solo tendrias que cargarlo una vez.
 

raptorlecter

Member
Licensed User
Longtime User
Bueno, vamos a ver, el código es este;


scrollaperitius.Initialize(500)
pnaperitius.AddView(scrollaperitius,0,50,860,350)

Panel1.Initialize("")
scrollaperitius.Panel.AddView(Panel1,0,0,860,520)


scrollaperitius es un ScrollView creado en el Designer dentro de otro panel con padre Activity.

pnaperitius es un panel dentro de otro panel llamado pnmenjar.

Panel1 es un panel con padre Activity que contiene un Label y una ImageView.

Todo aparenta funcionar bien, pero el contenido del label y de la imageview no se ven, y si según dices cuando Panel1 se coloca dentro del ScrollView todo debería funcionar como si estuviese en la Activity.

Pues no funciona...

Gracias por tu ayuda.

P.D. ¿No habría sido más fácil hacer que el ScrollView funcionase como un panel normal pero con la capacidad de hacer scrolling fuera de sus límites en unas proporciones programables? Digo yo.
 
Last edited:

jota

Active Member
Licensed User
Longtime User
P.D. ¿No habría sido más fácil hacer que el ScrollView funcionase como un panel normal pero con la capacidad de hacer scrolling fuera de sus límites en unas proporciones programables? Digo yo.

En realidad funciona asi, dentro del ScrollView hay un panel ScrollView.panel pero un ejemplo es mejor que mil palabras ;)

Sub Globals
Dim b As Int
Dim vY As Float
Dim svMenu As ScrollView
Dim lbl(100) As Label
Dim img(100) As ImageView
End Sub

Sub Activity_Create(FirstTime As Boolean)
svMenu.Initialize(100) 'Alto previsto para el svMenu
Activity.AddView(svMenu,0,0,100%x,100%y) 'Hacemos que el scrollview ocupe el 100% de la pantalla

'Introducimos 100 etiquetas e imagenes
vY = 0
For b = 0 To 99
lbl(b).Initialize("lbl")
img(b).Initialize("img")
svMenu.Panel.AddView(img(b),0,vY,50dip,50dip)
svMenu.Panel.AddView(lbl(b),50dip,vY,100%x-50dip,50dip)
img(b).Color = Colors.ARGB(255,Rnd(1,255),Rnd(1,255),Rnd(1,255))
lbl(b).Text = "label " & b
vY = vY+50dip
Next

'Ajustamos el alto del panel del scroll view para que se vea todo
svMenu.Panel.Height = vY

End Sub


Supongo que el problema de que no se vean los label y las imagenes debe de ser por el orden de visualización, prueba a poner [lbl].BringToFront al final del bloque de codigo que tengas para las imagenes y labels que no puedes ver a ver si asi se te arregla. Y como consejo te diria que no uses valores absolutos cuando hagas diseños de pantalla, mejor porcentajes de X e Y asi te funcionaran los programas en todos los dispositivos independientemente del tamaño de las pantallas.
 

raptorlecter

Member
Licensed User
Longtime User
Voy a hacer la prueba según explicas.

Lo de valores absolutos es porque haciendo una programación de prueba par un dispositivo en concreto, y el resultado de esta me vale para decidir si adquirir o no el paquete.

De hecho ya he decidido que si lo cojo, pero esperaré a mañana para adquirirlo, todo dependerá de si resuelvo este "enigma", pues si con los cosas sencillas se atasca el tema, cuando empiece con lo complejo puede ser mortal.

El mayor problema de este basic4android es que la poca documentación que hay es toda en inglés y con ejemplos que se salen del tema, con lo que complican la comprensión, y encima de muchas cosas no se explica demasiado.

Imagino que cuando la comunidad castellana crezca podremos lograr que los nuevos vayan más rápidos cogiendo el tranquillo, pero por ahora es realmente tedioso avanzar hasta en lo más básico.

Pero para los que llevamos 30 años programando, si pudimos con aquellos Cobol, RPGII y Visual Basic, podremos con esto.
 

jota

Active Member
Licensed User
Longtime User
Cuando controles B4A veras que es el lenguaje mas "divertido" con el que has trabajado, y lo del ingles andamos igual por lo que dices, si te sirve de ayuda yo navego con chrome que va traducciendo todo mientras buscas por el foro.
Animo :)
 

raptorlecter

Member
Licensed User
Longtime User
Yo sólo trabajo en Chrome para mi uso particular, cuando hago cosas para clientes cargo los 5 navegadores más utilizados, pero las traducciones también traducen el código, con lo que tienes que andar todo el tiempo traduce/original para enterarte de algo, y es un auténtico peñazo.
 

raptorlecter

Member
Licensed User
Longtime User
Bueno, por fin he conseguido que funcione.

El problema es que utilizaba elementos ya creados en el Designer, y para que funcione correctamente los elementos a poner dentro del Panel del ScrollView han de ser creados por programación, sino te de un error en el dispositivo de que ya existe un padre.

Imagino que eso también será salvable, pero para ser la primera aplicación, y con la trial, con límites como una sola Activity, ya estoy contento. A ver si durante esta noche la acabo y os la puedo ofrecer para que la veáis, aunque está diseñada en exclusiva para tablet de 10", 1280x800 pixels de tamaño.

Gracias a todos por la ayuda, seguro que avanzaré mucho junto a vosotros. Mañana cae la Enterprise.
 
Top