Hello all,
Using a CLV in a B4i project I have some elements inside the items those must to be measured and adjusted to adapt the content. This question reflects on the CLV item panel height which is runtime calculated and adjusted. Some labels widths must to be adjusted also. The createPanel code is something like this:
I noticed that, if I pause the execution (F8 - step by step), I can see on the screen the views being correctly modified by the code but, after all code to run, something that isn't showed in logs resizes the entire screen screen (correctly, because the CLV panels are adjusted to the correct width), but rolls back the runtime adjusts of the views.
Doesn't matter what height or width I set for the labels inside CLV panels, at the end it always returns to the original size configured in the layout.
What is happening? Is there something wrong in the code?
Please help - anybody?
Thanks !!!
PS: the entire project uses B4XPages
Using a CLV in a B4i project I have some elements inside the items those must to be measured and adjusted to adapt the content. This question reflects on the CLV item panel height which is runtime calculated and adjusted. Some labels widths must to be adjusted also. The createPanel code is something like this:
B4X:
Private Sub createProdItem(mapProd As Map) As B4XView
Dim p As B4XView = xui.CreatePanel("")
p.SetLayoutAnimated(0,0,0,100%x,145dip)
p.LoadLayout("restaurantMenuProduto")
Dim lblProductName As Label = p.GetView(0)
Dim imgProduct As ImageView = p.GetView(1)
Dim lblProductDescrition As Label = p.GetView(2)
Dim lblprice As Label = p.GetView(3)
Dim lblOriginalprice As Label = p.GetView(4)
Dim lblDash As Label = p.GetView(5)
lblProductName.Text = mapProd.Get("description")
lblProductDescrition.Text = mapProd.Get("details")
Dim unitPrice As Double = mapProd.Get("unitPrice")
lblprice.Text = "R$ " & NumberFormat2(unitPrice,1,2,2,False).Replace(".",",")
Dim unitMinPrice As Double = mapProd.Get("unitMinPrice")
Dim can As B4XCanvas
can.Initialize(Root)
Dim rec As B4XRect
rec = can.MeasureText(lblprice.Text,lblprice.Font)
lblprice.Height = rec.Height
If unitPrice > 0 Then
Dim unitOriginalPrice As Double = mapProd.Get("unitOriginalPrice")
If unitOriginalPrice = 0 Then
lblOriginalprice.Visible = False
lblDash.Visible = False
Else
lblprice.TextColor = Colors.Green
lblOriginalprice.Text = "R$ " & NumberFormat2(unitOriginalPrice,0,2,2,False).Replace(".",",")
rec = can.MeasureText(lblOriginalprice.Text.trim,lblOriginalprice.Font)
lblDash.Width = rec.Width
lblDash.Top = lblOriginalprice.Top + lblOriginalprice.Height / 2 - 4dip
End If
Else
lblprice.Text = "A partir de R$ " & NumberFormat2(unitMinPrice,1,2,2,False).Replace(".",",")
lblOriginalprice.Visible = False
lblDash.Visible = False
End If
imgProduct.Tag = mapProd
p.Height = lblprice.Top + lblprice.Height + 25dip
mapProd.Put("panelType","produto")
p.Tag = mapProd
Return p
End Sub
I noticed that, if I pause the execution (F8 - step by step), I can see on the screen the views being correctly modified by the code but, after all code to run, something that isn't showed in logs resizes the entire screen screen (correctly, because the CLV panels are adjusted to the correct width), but rolls back the runtime adjusts of the views.
Doesn't matter what height or width I set for the labels inside CLV panels, at the end it always returns to the original size configured in the layout.
What is happening? Is there something wrong in the code?
Please help - anybody?
Thanks !!!
PS: the entire project uses B4XPages