German Neue Form/Designer/Layout öffnen, aber wie?

BenKhederSoftware

Member
Licensed User
Guten Tag! :)
Ich bin neu hier und arbeite mich gerade erst ein.
Leider habe ich es noch nicht hinbekommen, wie man
eine neue Form vom Designer anzeigen lässt.
Damit meine ich das man auch die Layouts wechseln kann.
Wenn ich nun auf Button1 klicke, dann soll eine neues Layout angezeigt bekommen.
Ich kenne den richtigen Begriff in der Andriod Programmierer noch nicht,
ich meine aber Form / Designer / Layout.
Freue mich auf euere Hilfe.
MFG
 

DonManfred

Expert
Licensed User
Longtime User


 

mw71

Active Member
Licensed User
Longtime User
Moin, Moin,

Wenn du neu Startest kannst du dir im Designer das Layout erstellen, auch mehrere Varianten eines (z.B. für verschiedene Bildschirmgrößen oder Lanscape/Portrait Mode).
Dieses wird dann in einer Layoutdatei gespeichert.
Eine weitere (oder 2.....3....) Layoutdatei im Desinger anzulegen sollte kein Problem sein.
(Empfehlung, zeitnah mit dem Thema Ancors u.s.w. beschäftigen)

Dann musst du dir überlegen wie du diese Layoutdatein anzeigen lassen möchtet
- in mehreren Activitys
- eine Activity mit Panels oder TabHost
- mit B4XPages (diese unterstützen aber, glaube ich, kein Landscape Mode?)
Besonders bei den beiden ersten Varianten solltest (um nicht zu sagen musst) du dich mit
dem Android Lifetime Cycle (oder so) beschäftigen

Je nach gewählter Verfahrensweise musst du dann das Layout laden und auf die Eingaben reagieren.
Dazu am besten die diversen Anleitungen/Beispiele durchschauen, z.B. auch hier : booklets

Grüße & viel Erfolg
 

pucki

Active Member
Licensed User
Longtime User
Ich mache EINE Activity .

Dort klatsche ich (einfach so) die Panels drauf.

Im Designer lege ich nun die Objekte auf das Design.

In der Global Sub kommt dann folgender code

Dim my_panel_go As Panel
Dim my_panel_1 As Panel
Dim my_panel_2 As Panel


B4X:
Sub Activity_Create(FirstTime As Boolean)
    
    DateTime.DateFormat = "yyyyMMdd"
    akt_datum = DateTime.Date(DateTime.Now)
    
    farbe_weiss.initialize(Colors.White,5)
    farbe_grau.initialize(Colors.Gray ,5)
    farbe_black.initialize(Colors.Black ,5)
    farbe_rot.initialize(Colors.Red ,5)
    farbe_gelb.initialize(Colors.Yellow ,5)
    farbe_hintergrund.initialize(Colors.LightGray ,5)
    
    Activity.LoadLayout("des_leer")
    my_panel_1.Top = 0dip
    my_panel_1.Left = 0
    my_panel_1.Height  = 840dip
    my_panel_1.Width   = 1440dip
    my_panel_1.LoadLayout("des_prg")
    'hp_alte_daten_anzeigen.Background =  Colors.Gray ' farbe_grau 'Colors.Gray
    my_panel_1.Visible = False
    
    
    my_panel_go.LoadLayout ("des_go") 'hauptmenü
    my_panel_go.Top = 0dip
    my_panel_go.Left = 0
    my_panel_go.Height  = 840dip
    my_panel_go.Width   = 1440dip
    my_panel_go.Background = farbe_hintergrund
    my_panel_go.Visible = True
    
    End sub


im Layout DES_LEER liegen nur die Panel's irgendwo drauf.

Wechseln zwischen den Panels mache ich mit der VISIBLE Eigenschaft.


Gruß

Pucki
 

BenKhederSoftware

Member
Licensed User
@an alle
Vielen Dank ,an alle. :)
Ich könnte das Problem nun so lösen:

B4X:
Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Layout1")
End Sub

Sub Button1_Click
    MsgboxAsync("Weiter", "Title")
    
    Activity.RemoveAllViews
    Activity.LoadLayout("Layout2")
End Sub

Private Sub Button2_Click
    MsgboxAsync("Zurück", "Title")
    
    Activity.RemoveAllViews
    Activity.LoadLayout("Layout1")
End Sub
 
D

Deleted member 103

Guest
@an alle
Vielen Dank ,an alle. :)
Ich könnte das Problem nun so lösen:

B4X:
Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Layout1")
End Sub

Sub Button1_Click
    MsgboxAsync("Weiter", "Title")
   
    Activity.RemoveAllViews
    Activity.LoadLayout("Layout2")
End Sub

Private Sub Button2_Click
    MsgboxAsync("Zurück", "Title")
   
    Activity.RemoveAllViews
    Activity.LoadLayout("Layout1")
End Sub
Ja, so funktioniert auch aber..., ich empfehle dir mit dem zu starten was dir @DonManfred empfohlen hat.
 

pucki

Active Member
Licensed User
Longtime User
@an alle
Vielen Dank ,an alle. :)
Ich könnte das Problem nun so lösen:

JA so funktioniert das auch. Aber Panel's sind einfach zu kontrollieren wie Activity's .

Bei einer Activity must du IMMER den ganzen Bildschirm kontrollieren. Bei einen Panel nicht. Dies ist bei mir besonders für die Zukunft wichtig.

Stell dir vor, du hast eine APP die irgendwann einmal erweitert wird. Damit das sauber klappt macht man einfach ein Menü. Du must nun dieses Menü auf ALLES
Activity's anpassen, ich nicht.

Ich lege das Menü auf die 1. Activity die ich habe. Verschiebe die Panels um X-px nach unten per Code und das wars. Und witzigerweise muss ich nicht einmal das Design wirklich ändern weil eine Spezialroutine von mir automatisch die Objekte in der Größe auf den Panels anpasst.

Im Menü wird einfach bei jeden Menü eine Sub aufgerufen die ALLE Panels auf visible = false setzt, und in der nächsten Zeile das gewünschte Panel visible = true setzt.
Fertig.

Aber ich bin faul ;)


Gruß

Pucki
 
Top