Wie kann ich per Code ein Layout in ein anderes "einsetzen"?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von mdolphin, 03.12.2010.

  1. mdolphin, 03.12.2010 #1
    mdolphin

    mdolphin Threadstarter Neuer Benutzer

    Beiträge:
    10
    Erhaltene Danke:
    0
    Registriert seit:
    25.11.2010
    Was ich eigentlich erreichen wollte: Die gleiche Funktioinalität wie bei TabWidgets, nur dass die Navigation senkrecht an der linken Bildschirmseite sein soll, und sich in Abhängigkeit der Auswahl der Navigation (sozusagen des "tabs") rechts der Bildschirminhalt ändert.

    Nachdem TabWidgets nicht vertikal genutzt werden können, habe ich die Navigation dort jetzt über eine ListView realisiert. Rechts daneben ist ein FrameLayout, in das ich den eigentlichen Seiteninhalt per Activity einfügen möchte:

    Code:
    <LinearLayout android:id="@+id/LinearLayout01"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal">
    
        <ListView android:id="@+id/mnuList" android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:layout_weight="1.6"/>
        <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">
                
        </FrameLayout>
    </LinearLayout>
    
    Natürlich kann ich dem FrameLayout mittels .addView() neue Elemente hinzufügen. Die Frage ist allerdings ob es auch eine Möglichkeit gibt hier per Code ganze XML-Layouts quasi zu "injizieren"? Die einzelnen darzustellenden Seiten sind nämlich recht komplex, und das möchte ich mir nicht komplett über Java Code antun.

    Oder bin ich völlig auf dem Holzweg und es gibt für das geschilderte Vorhaben eine bessere Lösung?

    Gruß
    Michel
     
  2. devmil, 04.12.2010 #2
    devmil

    devmil Junior Mitglied

    Beiträge:
    36
    Erhaltene Danke:
    56
    Registriert seit:
    04.12.2010
    Hallo,

    mit Hilfe des LayoutInflaters kannst du xml-Layouts instanziieren und dann die View per Java Code in deinen Container (FrameLayout) setzen.

    Code:
    LayoutInflater inflater = LayoutInflater.from(getContext());
    View view = inflater.inflate(R.layout.deinseitenlayout, null);
    container.addView(view);
    
    Die inflate Methode hat noch ein paar Überladungen die so aussehen, als ob man die erzeugte View automatisch dem Container hinzufügen lassen kann. Das habe ich aber noch nie ausprobiert.

    Ich hoffe, das hilft dir weiter.

    Devmil
     

Diese Seite empfehlen