Spanish (SOLUCIONADO) Lista con filas de altura ajustada al tamaño del texto

J M Movilla Cuadrado

Member
Licensed User
Abusando de la increíble disponibilidad que en este foro estoy encontrando para sacarme de mis novatadas, adjunto el código con el que intento que las filas de un listado se presenten con altura suficiente para que se visualice el texto completo. Está muy verde todavía...

Esta vez pido demasiado, lo reconozco; pero no tengo más "posibles" que ofrecer mi súplica de perdón y mi agradecimiento.
 

Attachments

  • rows_variable_height.zip
    9.9 KB · Views: 239
Last edited:

IdasI4A

Active Member
Licensed User
Longtime User
Mira si así te sirve.
B4X:
Sub Presenta
   Dim i, Y As Int
   Dim cDato As String
   
   ScrollView1.Panel.RemoveAllViews
   
   Y=2dip
   For i = 1 To 5       ' Será de una lista de donde obtenga cada cDato
       Dim iv As Label

       iv.Initialize("")
' lo añadimos al panel del ScrollView, con una altura cualquiera y luego le ponemos la atura adecuada
       ScrollView1.Panel.AddView(iv,15dip,Y,ScrollView1.Width-30dip,10dip) 
       iv.Gravity = Bit.Or( Gravity.CENTER_VERTICAL, Gravity.LEFT)
       
       ' Alternando el color de fondo
       If i Mod 2= 0 Then
           iv.Color=0xFFE290D0
       Else
           iv.Color=0xFF7EF4E1
       End If
       
       ' Para probar...
       If i = 1 Then
           cDato="En un lugar de La Mancha de cuyo nombre no quiero acordarme,"
       else if i = 2 Then
           cDato="no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua, rocín flaco y galgo corredor."
       else if i = 3 Then
           cDato="Una olla de algo más vaca que carnero,"
       else if i = 4 Then
           cDato="salpicón las más noches,"
       else if i = 5 Then
           cDato="duelos y quebrantos los sábados, lentejas los viernes, algún palomino de añadidura los domingos, consumían las tres partes de su hacienda. El resto della concluían sayo de velarte, calzas de velludo para las fiestas, con sus pantuflos de lo mesmo, y los días de entresemana se honraba con su vellorí de lo más fino. Tenía en su casa una ama que pasaba de los cuarenta, y una sobrina que no llegaba a los veinte, y un mozo de campo y plaza, que así ensillaba el rocín como tomaba la podadera"
       End If
       
       iv.Text=cDato
       iv.TextSize=16
       iv.TextColor=0xFF120202
       iv.tag = i
       iv.BringToFront
       
       iv.Height = nu.MeasureMultilineTextHeight(iv, cDato) ' ponemos la altura real
       Y=Y+iv.Height+2dip ' 2dip es el espacio entre los controles. 
   Next
   ScrollView1.Panel.Height=y
End Sub
 

J M Movilla Cuadrado

Member
Licensed User
Guauuuuu. De maravilla. Creo que no hubiera sido capaz de dar con esa fórmula nunca.

Te lo agradezco muchísimo.
 
Last edited:
Top