Layout = GUI Oberfläche?!

  • Hallo,
    ich will jetzt eine App mit ca. 10 Fenstern entwickeln.
    Das Layout ist eigentlich überall relativ gleich.
    Im Moment hab ich das ganze so verstanden, dass ich für jedes Fenster ein Layout (main.xml) erstellen würde.


    Allerdings steht Layout ja nicht für View / Form, weshalb ich jetzt bevor ich 10 mal das selbe designe,
    von erfahreneren Programmieren erfahren, wie sie das anpacken.


    Kann man auch nur ein Layout machen und das flexibel über Java befüllen o.ä.?
    thx

  • Hi,


    welches layout eine Activity verwendet, wird in der onCreate Methode der Activity gesetzt.

    Java
    setContentView(R.layout.main);


    Das bedeutet man braucht nicht zwangsweise pro Activity ein layout File. Man braucht noch nicht mal für jede Ansicht, die man basteln will eine eigene Activity. Rein theoretisch kann man auch ein Intent erzeugen, dem mit putExtra irgendeinen Identifier mitgeben und sich dann selbst wieder aufrufen.
    Inhalt dynamisch via Java Code befüllen geht auch sehr einfach, man holt sich mit findElementById das Element, dem man etwas hinzufügen möchte. Jedes Element, dass man im xml einhängen kann heisst als Java Klasse genauso.


    Ein kleines Beispiel:

    Java
    WebView wv = new WebView(this); 
    LinearLayout ll = (LinearLayout) findElementById(R.id.myLinearLayout); 
    ll.addView(wv);


    Ich hoffe damit konnte ich deine Fragen ausreichend beantworten ;)


    Gruß,
    matze

  • Danke für die Antwort!


    Gibt es Tutorials wie ich Steuerelemente per Java erzeugen, konfigurieren und hinzufügen kann?
    D.h. ich kann meine main.xml als Grundgerüst Layout machen und dann per Java immer selbstständig befüllen!?
    Oder ist es empfehlenswerter jeweils eine "main.xml" zu machen für jede neue Seite, die angezeigt werden soll?


    thx

  • Zitat

    Gibt es Tutorials wie ich Steuerelemente per Java erzeugen, konfigurieren und hinzufügen kann?

    Du kannst natürlich jeder Zeit im Programm Steuerelement erzeugen, da Java klassenbasiert ist passiert das meist per NEW


    Button btest = new Button(... ).


    Das geht zwar ist aber nicht besonders schön, bzw wartbar.
    Was Matthias meinte du kannst so viele Layout anlegen wie du möchtest und Sie per Bedarf aufrufen.



    view1.xml, view2.xml, view3.xml


    und dann je nach Bedingung - Übergabeargument


    setContentView(R.layout.view1);


    oder


    setContentView(R.layout.view2);


    ------------------------------------


    Das ist machbar, aber natürlich solltest genau Überlegen ob das Sinn macht.
    Wenn du jetzt Inhalte befüllst holst du Dir ja per (findViewbyId(R.id.blablup) deine Steuerelemente,
    das müsstest du jetzt jedes Mal in deiner Bedingungsabfrage kapseln und kann schnell sehr unübersichtlich werden.

  • Hi,


    wie killphil mich schon richtig ergänzt hat, hab ich vergessen dazu zu schreiben, ist Oberflächen via Java Code erzeugen nicht wirklich sauber und wartbar. Man sieht auf den ersten Blick nicht woher jetzt eigentlich ein Element kommt und muss sich dann durch die Activity wurschteln bis man gefunden hat wo da was eingehängt wird.
    Aber kommt halt immer drauf an was man machen will.


    Tutorials, wie man Steuerelemente hinzufügen kann findest du in der API Reference: http://developer.android.com/reference/packages.html


    In einem meiner Projekte habe ich selbst dynamisch Elemente erzeugt und eingehängt, allerdings habe ich das nur gemacht, weil der Typ des Objekts dynamisch war und es nur ein einziges war. Dabei ging es auch mehr darum ob das überhaupt vernünftig geht ;) Wenn sich das irgendwie vermeiden lässt, würde ich es lieber sauber machen an deiner Stelle. Wenn du nach einem Jahr etwas erweitern willst wirst du sehr dankbar sein es sauber gemacht zu haben.


    Gruß,
    matze

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!