German Canvas.DrawLine in Scrollview Fehler

danebn11

Member
Licensed User
Hallo Leute,

ich möchte in einer Scrollview durch Canvas.DrawLine Trennstriche zwischen Buttons ziehen, welche sich beim Scrollen auch mitbewegen sollen.

Versuch 1: (Ausschnitt aus dem Code)

B4X:
Sub Globals
    Private ScrollView1 As ScrollView
    Dim Canvas1 As Canvas
End Sub

Sub Activity_Resume
    ScrollView1.Initialize(100%y)
    Activity.AddView(ScrollView1,0,0,100%x,88%y)
    Canvas1.Initialize(ScrollView1)
    for i = 0 to Anzahl_Labels
       Canvas1.DrawLine(0%x,(i * Label_height),100%x,(i * Label_height),Colors.Black,2dip)
    Next
End Sub

Das ist das Ergebnis:

https://1drv.ms/u/s!An0cvhoTEKFCgbRwI9YIT-VffpxNYA

Sieht genau so aus wie ich wollte, allerdings bewegen sich die Trennstriche beim Scrollen nicht mit.

Versuch 2:

B4X:
Sub Globals
    Private ScrollView1 As ScrollView
    Dim Canvas1 As Canvas
End Sub

Sub Activity_Resume
    ScrollView1.Initialize(100%y)
    Activity.AddView(ScrollView1,0,0,100%x,88%y)
    ScrollView1.Panel.Width = 100%x
    ScrollView1.Panel.Height = 100%y
    Canvas1.Initialize(ScrollView1.Panel) 'Diesmal wird auf .Panel initialisiert
    for i = 0 to Anzahl_Labels
       Canvas1.DrawLine(0%x,(i * Label_height),100%x,(i * Label_height),Colors.Black,2dip)
    Next
End Sub

Hier das Ergebnis:

https://1drv.ms/u/s!An0cvhoTEKFCgbRxETz6C3ZdiZ8-oQ

Diesmal bewegen sich die Trennstriche beim Scrollen mit, allerdings passen die Positionen nicht mehr.

Zur Info:
Label_height entspricht 50dip, wobei die Buttons mit einer Größe von 40dip etwas Luft über und unter den Trennstrichen lassen sollten.

Kann mir jemand sagen, wieso die Abstände am Panel anders sind, als direkt am Scrollview, obwohl alles in dip angegeben wird?
Gibt es einen Unterschied bei den dip Werten, wenn man sie verschieden verwendet?

Die Buttons werden übrigens auch im Code eingefügt:

B4X:
ScrollView1.Panel.AddView(Button_plus,Position_Button_plus_X,Position_Y + (i * Y_Offset) + 5dip,Button_height,Button_height)
ScrollView1.Panel.AddView(Button_minus,Position_Button_plus_X + Button_height + 5dip,Position_Y + (i * Y_Offset) + 5dip,Button_height,Button_height)

Danke im Voraus
 
Last edited:

danebn11

Member
Licensed User
Problem gelöst :)

Falls nochmal jemand dieses Problem hat:
Nach dem Canvas.initialize(Scrollview) darf Scrollview.Panel.height nicht mehr verändert werden, außer man führt Canvas.initialize nochmals aus.
 

Filippo

Expert
Licensed User
Problem gelöst :)

Falls nochmal jemand dieses Problem hat:
Nach dem Canvas.initialize(Scrollview) darf Scrollview.Panel.height nicht mehr verändert werden, außer man führt Canvas.initialize nochmals aus.
Viel zu kompliziert, schau dir die Beispiele von xCustomlistview.
 
Top