Spanish [Solucionado] Ajustar altura xClv en B4XMainPage

angel_

Well-Known Member
Licensed User
Longtime User
En la pantalla principal tengo un CustomListView al que cargo un LoadLayout con varios elementos en forma de dos columnas, la primera un icono (o varios) y la segunda el texto, como puede haber muchos elementos (icono/s + texto) no puedo utilizar VisualDesigner para ubicarlos correctamente, entonces lo hago a través de código, pero nunca consigo ajustar perfectamente la altura del xClv y en algunos dispositivos me sobra mucho espacio abajo en otro menos pero no consigo establecer el alto exacto.

¿Conocéis alguna forma de ajustar correctamente la altura del xClv?

B4X:
Private Sub B4XPage_Created (Root1 As B4XView)
    Root = Root1
    
    Dim p1 As B4XView = xui.CreatePanel("")
    p1.SetLayoutAnimated(0, 0, 0, 100%x, 120%y)
    
    Root.LoadLayout("LytClvPrincipal")
    p1.LoadLayout("Principal")

    DistribuirElementos
    '...'
End Sub

Captura.JPG
 

Gabino A. de la Gala

Active Member
Licensed User
Longtime User
Yo lo que suelo intentar hacer es cargar primero el layout que voy a cargar posteriormente en el clv y tomar como referencia el objeto que tengo definido más abajo y a la derecha.

Según tú ejemplo, la altura del clv la calcularía partiendo del top del "texto3" + la altura del "texto3" + el margen que le quisieras dar. Así me aseguro de que la altura se ajuste siempre correctamente independientemente de los dispositivos en los que se visualicen. Y esa altura es la que asigno luego al SetLayoutAnimated.
 
Last edited:

angel_

Well-Known Member
Licensed User
Longtime User
Ha funcionado perfecto, el código queda así:

B4X:
Private Sub B4XPage_Created (Root1 As B4XView)
    Root = Root1

    Dim p1 As B4XView = xui.CreatePanel("")
    p1.SetLayoutAnimated(0, 0, 0, 100%x, 100%y)
    p1.LoadLayout("Principal")
    DistribuirElementos
    
    Root.LoadLayout("LytClvPrincipal") ' contiene clvPrincipal'
    p1.Height = lblUltimoElemento.Top + lblUltimoElemento.Height
    
    clvPrincipal.AsView.Height = p1.Height
    clvPrincipal.Add(p1, "")
      
    '...'
End Sub
 
Top