German Ermittelte Höhe nicht zu verstehen

Sinan Tuzcu

Well-Known Member
Licensed User
Longtime User
Hallo,

ich lade in einer Scrollview einen Layout auf und Ende der Schleife wird mir z.B. bei 16 mal Laden
die Zahl 147 ausgegeben.

Ist das nicht etwas zu wenig?
B4X:
Sub Switch_In_ScrollView(Anzahl As Int)    'ScrollView wird platziert und gefüllt
    Dim counter As Int = 1
    Dim Chanel As Int = 1
    Dim SVhohe As Int
    
    Select Anzahl 
        Case 8: SVhohe = 48dip
        Case 16: SVhohe = 96dip
        Case 32: SVhohe = 192dip
        Case 64:SVhohe = 385dip
    End Select
    
    Anzahl = Anzahl -1
    ScrollView1.Initialize(SVhohe * 10) 'Innere Höhe definieren (nicht sichtbar) 32=193dip, 64=385dip
    ScrollView1.Color=Colors.White
    ScrollView1.RemoveView
    
    Activity.AddView(ScrollView1, 10dip, 160dip, 100%x - 20dip, 100%y - 165dip) 'Sichtbare: Linksabstand, Obenabstand, Breite, Höhe definieren
    
    
    For i = 0 To Anzahl 
        Dim p As Panel
        p.Initialize("")
        
        If counter > 128 Then
            counter = 1
            Chanel = Chanel + 1
        End If
        
        p.Tag = Chanel & "|" & counter
        counter = counter * 2
        p.LoadLayout("SwitchButton")
        
        ToggleButton1.Tag = Chanel
        Label1.Text="Relais " & (i+1)
        For v = 0 To p.NumberOfViews - 1
            p.GetView(v).Tag = p 'set the panel as the Tag value
        Next
        ScrollView1.Panel.AddView(p, 0, i * 60dip, ScrollView1.Panel.Width, 58dip)
    Next   
    ToastMessageShow(p.Height,True)
End Sub
 

klaus

Expert
Licensed User
Longtime User
Du musst die innere Höhe angeben ja nach Anzahl der Objekte die Du einfügst:
B4X:
For i = 0 To Anzahl 
    Dim p As Panel
    p.Initialize("")
        
    If counter > 128 Then
        counter = 1
        Chanel = Chanel + 1
    End If
        
    p.Tag = Chanel & "|" & counter
    counter = counter * 2
    p.LoadLayout("SwitchButton")
        
    ToggleButton1.Tag = Chanel
    Label1.Text="Relais " & (i+1)
 
    For v = 0 To p.NumberOfViews - 1
        p.GetView(v).Tag = p 'set the panel as the Tag value
    Next    
Next
ScrollView1.Panel.Height = i * 60dip
ToastMessageShow(p.Height,True)
 

Sinan Tuzcu

Well-Known Member
Licensed User
Longtime User
Hi Klaus,

jetzt wird die Innerehöhe bei Tablet 1440 und bei Handy 1440 angezeigt, obwohl sie die gleiche Mänge haben sprich 16 mal wurde
p.LoadLayout("SwitchButton") geladen.

Wieso ist es unterschiedlich
Sollte nicht die Innerehöhe gleich bleiben?
 

klaus

Expert
Licensed User
Longtime User
Ich verstehe nicht was du meinst.
jetzt wird die Innerehöhe bei Tablet 1440 und bei Handy 1440 angezeigt
Was ist unterschiedlich?
Die Höhe kann auf verschiedenen Geräten unterschiedlich sein je nach deren dip Wert (Bildschirmskala).
In deinem Fall sind 1440 / 16 = 90
Ich nehme an dass deine Geräte einen dip Wert von 1.5 haben, also 90 / 1.5 = 60dip, das ist die Höhe von "SwitchButton".
 
Top