[Gelöst] Verständnisproblem mit dem (Frame-)Layout

  • Hab erst mit dem Android programmieren begonnen und bin gerade an einer Stelle, die ich vom Konzept her nicht verstehe.


    was ich grad probiere: Eine Anwendung mit einer Activity, die aus 4 Tabs besteht. Arbeite mit Eclipse.


    Nach diversen Anwenderschwierigkeiten funktioniert die Anwendung mit 4 Tabs, solange der einzige Inhalt jeweils eine TextView ist.


    Sobald ich jetzt zusätzlich eine ListView in einen oder zwei Tabs aufnehme, stimmt das ganze Layout nicht mehr, weil die ListViews jetzt in allen Tabs auftauchen. :-[


    Ich versteh die Denke nicht. Wieso werden die TextViews immer jeweils ausgetauscht und bei den ListViews tauchen alle in jedem Tab auf?


    Hab mal im Tab1 (Gruppe) ein vertikales LineaLayout gewählt und in Tab2 (Mitglieder) ein horzontales LinearLayout. Tatsächlich werden die beiden Listviews im ersten Tab vertikal und im 2. Tab horizontal angeordnet.


    Leg mal die angesprochenen Sourcen in den Anhang, weil ich bestimmt Sachen übersehe und deshalb nicht beschrieben habe ;)


    Danke schon mal


    Oh, xml geht nicht, na dann ...


    main.xml



    tabgroup.xml



    tabmember.xml



    Wie immer, kann es zusätzlich auch noch sein, dass ich ein verkehrtes GUI Element genommen habe. Möchte im fertigen Zustand sowas wie eine Listbox, aus der ich einen oder mehrere Einträge auswählen kann (Multiselektion). Ist die ListView dafür das Richtige?

  • Damit hab ich auch noch keine Erfahrung - die erste Idee war, dass du vielleicht noch ein paar LinearLayouts um einzelne Abschnitte machst, aber die sehen alle gut aus.


    Workaround: mit findViewById die überflüssigen Listen suchen und mit setVisibility(View.GONE) verschwinden lassen.
    Zumindest solltest du dann weiterkommen bis jemand anderes 'nen bessern Vorschlag hat. ;)


    Und wenn man an den @+id/... rumbastelt, zwischendurch die Maninfest-Datei nochmal speichern, damit die IDs neu durchgerechnet werden.

  • Wollte schon am Mo antworten, allerdings hat mich das Forum/Browser-Paar nicht gelassen. Anyway.


    UweApps: Danke für Deine Antwort und für die Anregungen! Ich denke, dass ich mal den WorkAround probieren werde. Leider muss ich mich jetzt erst wieder rein denken, weil das Projekt schon etwas zu lange brach lag. Deine Alternativen finde ich auch sehr interessant :)


    [UPDATE] Inzwischen bin ich doch einen Schritt weiter. Beim Erstellen des TabHosts bin ich einem Videotutorial gefolgt. Darin wird zum Code in der Activity gesagt, dass als ID für den jeweiligen TAB die ID des ersten Elements innerhalb vom jeweiligen (Frame-)Layout genommen werden kann. Das hatte ich gemacht. Hab inzwischen in einem anderen Tutorial gesehen, dass die viel stimmigere Lösung empfohlen wurde, die ID des Layouts selbst zu verwenden. Das wars :)


    Konntet ihr natürlich nicht erkennen, weil ich den Code der Main Activity nicht dazu gelegt hatte.


    Was ich noch gelernt habe: Wenn ein TAB Elemente hat, die über die volle Breite gehen (z.B. TextView1) und in einem anderen TAB verwende ich ein Element, das nur so breit ist wie der enthaltene Text (TextView2), dann scheint weiterhin die TextView1 beim zweiten TAB durch. Das muss ein Bug sein, da der Effekt nicht bei jedem Wechsel in den zweiten TAB zu sehen ist, sondern sporadisch.


    Abhilfe ist tatsächlich auch TextView2 über die volle Breite zu definieren.

Jetzt mitmachen!

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