German Scrollview mit Scrolling?

Roeschti

Member
Licensed User
Longtime User
N'abend allerseits! Ich habe ein Tabhost, darauf ein Scrollview via Desginer gepappt und lasse via Saxparser aus einem XML das Scrollview füllen. Es geht dabei um EPG Daten.

Es funktioniert soweit alles perfekt, das Scrollview wird mit den richtigen Werten gefüllt wie ich das haben will, jedoch lässt sich das Scrollview nicht scrollen.

Hier ein Code-Ausschnitt:

B4X:
Dim lblKanal, lblEvent, lblDetail, lblEvent2 As Label
   Dim pbVergangenheit As ProgressBar 
   Dim pnlAdd As Panel
   Dim scvJetzt As ScrollView
   Dim pnlSCV As Panel
   Dim PanelHeight As Int
   Dim PanelTop As Int
   
   pnlSCV=scvJetzt.Panel
   pnlSCV.Height= 720dip
   pnlSCV.Color=Colors.Gray
   PanelHeight = 130dip
   PanelTop = 0dip

Sub parsJetzt2_EndElement(uri As String, Name As String, Text As StringBuilder)
   If parsJetzt2.Parents.IndexOf("epgitem") > -1 Then
       Select Name
           Case "sendung"
            If strSendung = "" Then 
               strSendung = Text.ToString
            Else
               strSendung2 = Text.ToString
            End If
            Case "subtitel"
                currentEPGEvent.subtitel = Text.ToString
            Case "zeit"
            If strZeit = "" Then
                   strZeit = Text.ToString
            Else 
               strZeit2 = Text.ToString
            End If
         Case "vergangen"
            If strVergangen = "" Then strVergangen = Text.ToString   'nicht überschreiben
            Case "detail"
            If strDetail = "" Then strDetail = Text.ToString   'nicht überschreiben
            Case "eventid"
                strEventID = Text.ToString
         Case "eventnr"
            strEventNr = Text.ToString   
        End Select
      
        'speichern   
        If strEventNr = "1" Then
      
         pnlAdd.Initialize("")
         pnlSCV.AddView(pnlAdd,0,PanelTop,scvJetzt.Width,130dip)
         pnlAdd.Color=Colors.Black
         
         lblKanal.Initialize("")
         pnlAdd.AddView(lblKanal,10dip,5dip,500dip,25dip)
         lblKanal.Color=Colors.Black
         lblKanal.Tag="lblKanal#" & strKanalNr
         lblKanal.TextSize = 16
         lblKanal.Text = strKanalNr & " - " & strKanal
                  
         lblEvent.Initialize("")
         pnlAdd.AddView(lblEvent,10dip,27dip,500dip,20dip)
         lblEvent.Color=Colors.Black
         lblEvent.Tag="lblEvent"
         lblEvent.Typeface = Typeface.DEFAULT_BOLD
         lblEvent.TextSize = 14
         lblEvent.Text = strZeit & "   " & strSendung
         
         lblDetail.Initialize("")
         pnlAdd.AddView(lblDetail,10dip,45dip,500dip,45dip)
         lblDetail.Tag="lblDetail"
         lblDetail.TextSize=12
         lblDetail.Gravity = Gravity.LEFT
         lblDetail.Gravity = Gravity.TOP
         lblDetail.Text=strDetail 
         
         pbVergangenheit.Initialize("")
         pnlAdd.AddView(pbVergangenheit,10dip,98dip,500dip,5dip)
         pbVergangenheit.Progress=strVergangen
                  
         lblEvent2.Initialize("")
         pnlAdd.AddView(lblEvent2,10dip,107dip,500dip,20dip)
         lblEvent2.Color=Colors.Black
         lblEvent2.Tag="lblEvent2"
         lblEvent2.Typeface = Typeface.DEFAULT_BOLD
         lblEvent2.TextSize = 14
         lblEvent2.Text= strZeit2 & " " & strSendung2
         
            strSendung  = ""
            strSendung2 = ""
            strZeit = ""
         strZeit2 = ""
            strDetail = ""
         strEventNr = ""
         strVergangen = ""
            strEventID = ""  
         PanelTop = PanelTop + PanelHeight + 1dip
        End If     
   End If
End Sub

Habe ich irgendwo einen Fehler gemacht?

Thx für alle Hinweise!

ach ja, hier ist noch ein Screenshot wie ausschaut: http://www.thalmy.ch/diesunddas/screenshot.png
 
Last edited:

klaus

Expert
Licensed User
Longtime User
Du musst die Höhe des internen Panels der ScrollView auf die ganze Höhe setzen.
Das heisst:
B4X:
pnlSCV.Height = AnzahlEintraege * (PanelHeight + 1 dip)
Oder am Ende
B4X:
PanelTop = PanelTop + PanelHeight + 1dip
pnlSCV.Height = PanelTop + PanelHeight + 1dip
'DoEvents ' vielleicht noetig
Beste Grüsse
 
Last edited:

Roeschti

Member
Licensed User
Longtime User
Ach, dann ist also das interne Panel der effektive Scrollbereich.

Merci für den Hinweis, nun gehts. Habe einen Zähler in die Sub parsJetzt2_EndElement gesetzt und lege die Höhe erst am Ende fest, da die EPG Einträge sehr variabel sind. Innerhalb der Sub parsJetzt2_EndElement die Höhe laufend anzupassen geht auf meinem Gerät sehr langsam.
 
Top