German Scroll View (klappt nicht)

mw71

Active Member
Licensed User
Longtime User
Hallo,

das nächste Problem ist aufgetaucht, an dem ich bis jetzt gescheitert bin :(

Ich habe verschiedene Panels (Hauptseite, Setup...) für verschiedene Aufgaben. Das Layout welches ich in diese Lade (Buttons, Labels....) habe ich im Abstract Designer erstellt. Soweit funkt. das gut, auch das Umschalten und wiederherstellen (nach Pause/Resume) über setzten der Visible Eigenschaft.

Jetzt wird es (u.a.) auf der Setup Page etwas eng, so dass ich mir dachte, löse dass Problem über Scroll View. Nur daran bin ich bis jetzt gescheitert.

B4X:
'Variablen
Sub Globals
    Dim Panel1, Panel2, Panel3, Panel4 As Panel
    Dim WebView1 As WebView

'.....
end sub

'Main Programm
Sub Activity_Create(FirstTime As Boolean)

    Activity.AddMenuItem("Options","mnuOptions")
    Activity.AddMenuItem("Über","mnuInfo")
  
    Panel1.Initialize("") : Panel1.Visible = False
    Panel2.Initialize("") : Panel2.Visible = False
    Panel3.Initialize("") : Panel3.Visible = False
    Panel4.Initialize("") : Panel4.Visible = False
    WebView1.Initialize("WebView1") : WebView1.Visible =False
    Activity.AddView(Panel1, 0, 0, 100%x, 100%y)
    Activity.AddView(Panel2, 0, 0, 100%x, 100%y)
    Activity.AddView(Panel3, 0, 0, 100%x, 100%y)
    Activity.AddView(Panel4, 0, 0, 100%x, 100%y)
    Activity.AddView(WebView1, 0, 0, 100%x, 100%y)
    Panel1.LoadLayout("Log")
    Panel2.LoadLayout("Info")
    Panel3.LoadLayout("Setup")
    Panel4.LoadLayout("Leer")
   
    Panel1.Visible = True


'weiterer Code.....

end Sub

soweit der Code bisher.

Jetzt habe ich im Designer ein neues Layout erstellt, in diesem ist nur ein Scroll View drinn.
Unter Globals definert:

Dim SvSetUp As ScrollView


Im Programm dann noch die Zeilen:

Panel3.LoadLayout ("ScrollView")
SvSetUp.Panel.LoadLayout ("Setup")
SvSetUp.Panel.Height =800dip

Jetzt wird zwar das Layout "Setup" geladen, aber es ist nicht verschiebbar (Scrollbar).
Hat jemand eine Idee was ich da falsch mache bzw. ein Tipp wie es gehen könnte?

Grüße
 

MaFu

Well-Known Member
Licensed User
Longtime User
Das ScrollView Panel sollte die Höhe Deines Layouts haben.
Am einfachsten geht es, wenn Du im Designer ein Panel setzt und darauf alle Views platzierst.
Wenn dann Dein Panel z.B. den Namen "PanelBackground" hat:
B4X:
Panel3.LoadLayout ("ScrollView")
SvSetUp.Panel.LoadLayout ("Setup")
SvSetUp.Panel.Height = PanelBackground.Height
 

mw71

Active Member
Licensed User
Longtime User
Hallo,

mittlerweile funktioniert es. Irgend wann mal bin ich über diesen Post gestolpert:
https://www.b4x.com/android/forum/threads/initialize-scrollview.33028/#post-192768

und dort über den Satz:
Wenn ScrollView1.Panel.Height kleiner ist als ScrollView1.Height ist gibt es kein scrollen !

Danach hatte ich das ScrollView noch mal neu aufgesetzt, jetzt sieht das so aus:

B4X:
Dim SV_Info as ScrollView

'....

Panel2.Initialize("")
Activity.AddView(Panel2, 0, 0, 100%x, 100%y)
Panel2.LoadLayout("Scrollview_Info")               'enthällt nur das SV Elemet, das ist nur so groß wie der Bildschirm (480dip?!)


SV_Info.Panel.LoadLayout("Info")                     'hier sind dann die Buttons, Image, Labels u.s.w. die Verschiebbar werden sollen
SV_Info.Panel.Height =btn_InfoBack.Top + btn_InfoBack.Height +100dip

und es Funktioniert :)
Mit den ganzen Beispielen u.s.w. die ich mir vorher angesehen hatte, war ich irgendwie nicht zum Ziel gekommen.

Danke trotzdem für eure Tipps!

Grüße
 
Top