Spanish (SOLUCIONADO) El Scroview no presenta todos los items

J M Movilla Cuadrado

Member
Licensed User
En un ScrollView cargo los datos que he leído de un fichero. Utilizo el código que me aconsejasteis recientemente

B4X:
'   nIndMax es el número de items en ListDat

    Dim i As Int
    For i = 0 To nIndMax-1
        Dim iv As Label
        iv.Initialize("EditoDato")
        If i Mod 2= 0 Then
            iv.Color=0xFFE290D0
        Else
            iv.Color=0xFF7EF4E1
        End If
        iv.Text=ListDat.Get(i) 
        iv.TextSize=16
        iv.TextColor=0xFF120202
        iv.tag = i
        ScrollView1.Panel.AddView(iv, 15dip, 20dip * i, ScrollView1.Width - 35dip, 20dip )

' Aquí compruebo que se cargan TODOS los items del ListDat...

    Next

Pero lo que ocurre es que el ScrollView sólo me presenta 23... Se queda bloqueado y no sube más alla de ese número de filas.

He buscado y buscado, y no sé qué parámetro he de configurar en el ScrollView para evitar esa limitación.

Por lo demás, la aplicación ya me funciona muy bien, por lo que de nuevo os reitero mi agradecimiento.
 
Last edited:

Gabino A. de la Gala

Well-Known Member
Licensed User
Longtime User
Quizás tengas que actualizar el valor de ScrollView1.Panel.Height en función del tamaño de los view's agregados.
 

J M Movilla Cuadrado

Member
Licensed User
Muchas gracias por interesarte en mi problema. ¿Por cada item que agregue debo actualizar el ScrollView.Panel.Height?

Oh, no... Perdona; simplemente he puesto tras el bucle de rellenar el scroll:

B4X:
ScrollView1.Panel.Height=nIndMax*20dip

y SOLUCIONADO... Mil gracias.
 
Last edited:

Seneca

Active Member
Licensed User
Hola, coincido con Gabino.

Te falta definir el alto del Panel interno del ScrollView (ScrollView1.Panel.Height). Este panel ha de tener el alto (height) justo para que albergue todos los elementos verticales. Si se define un alto más pequeño de lo necesario, no se visualizarán todos los elementos. Si se define un alto excesivo, se mostrará un espacio vacio al final del scroll.

En el caso del ejemplo debería ser:

B4X:
 ScrollView1.Panel.Height = nIndMax * 20dip  '(nº de elementos * alto de cada elemento)

https://www.b4x.com/android/forum/threads/scrollview-example.6612/#post38619

Saludos.
 

J M Movilla Cuadrado

Member
Licensed User
Gracias también e ti, Seneca... Pero cuando el moderador apruebe mi post anterior, en el que contestaba a Gabino, verás que ya había incorporado exactamente la línea que tú me aconsejas, y que con ello quedaba el tema [SOLUCIONADO]
 

Seneca

Active Member
Licensed User
Gracias también e ti, Seneca... Pero cuando el moderador apruebe mi post anterior, en el que contestaba a Gabino, verás que ya había incorporado exactamente la línea que tú me aconsejas, y que con ello quedaba el tema [SOLUCIONADO]

Ah, bien. Desconocía que hubiese una modalidad de usuario con "control de moderador".
 

Gabino A. de la Gala

Well-Known Member
Licensed User
Longtime User
Muchas gracias por interesarte en mi problema. ¿Por cada item que agregue debo actualizar el ScrollView.Panel.Height?

Oh, no... Perdona; simplemente he puesto tras el bucle de rellenar el scroll:

B4X:
ScrollView1.Panel.Height=nIndMax*20dip

y SOLUCIONADO... Mil gracias.

Mira a ver si puedes editar el título del hilo y poner en él la palabra solucionado para que en futuras búsquedas, la gente sepa
 
Top