Spanish [Solucionado] Ajustar altura xClv en B4XMainPage

angel_

Well-Known Member
Licensed 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
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