Komplexes Layout unverändert scrollen

  • Moin,


    ich würde gern ein recht spezielles Layout erstellen. Gern würde ich auch, dass besagtes Layout vernünftig scrollt.


    Der (aktuelle) Aufbau ist wie folgt:


    Ich habe also salopp gesagt eine Art Header und zwei Listen, die unterschiedliche Objekte auflisten: News (nur die letzten fünf) und Infos.


    Beim ersten Versuch bekam ich meinen Header oben angeklatscht und die ListViews darunter liefen ganz gut.
    Als ich dann vom Test zum Produktivsystem umgeschaltet habe, stellte ich fest, dass je nach Endgerät die unterste Liste komplett fehlte oder arg geschrumpft dargestellt war und eigenmächtig scrollen wollte.


    Nun ging ich davon aus, dass ich einfach alle Views in eine ScrollView legen könnte und dann würde sich das schon ausgehen.
    Leider mag die ScrollView nur ein SubView, weshalb ich die Views ein weiteres mal in ein Layout verschachtelt habe.


    Nun sieht das Ganze spannenderweise aus wie im Screenshot:
    Platzhalter prangt oben, Liste 1 und Liste 2 sind mickrig klein und ich kann nur in ihnen scrollen.


    Jetzt suche ich Lösungsvorschläge für mein Problem.


    Möglichkeiten, die mir in den Sinn kamen, doch von denen ich aus Gründen erst einmal absehen möchte.
    1) Das Scrolling des ListViews irgendwie deaktivieren. Bin ich nur absolut gegen, weil es zur Grundfunktionalität des ListViews gehört. Wann immer ich irgendwo eine Grundfunktionalität abschalte, habe ich danach einen Riesenärger am Hals. Vermutung: sieht genauso dämlich aus wie jetzt und lässt sich dann nicht mehr scrollen.


    2) Den Header als HeaderView des ersten und die zweite ListView als FooterView des ersten ListViews setzen. Habe ich jetzt nicht so die Lust drauf, da es einerseits das Layout an sich unübersichtlicher macht ("Wo kommen denn jetzt die beiden zusätzlichen Views her?") und andererseits kann ich dann immer noch nicht sicher sein, dass die Anzeige endlich so funktioniert wie ich sie haben möchte.


    Meine bevorzugte Lösung wäre irgend etwas von Wegen ListView.setIsScrollable(false) oder ListView.setHeightFitsContent(true) oder sowas.
    wrap_content scheint ja offenbar nicht das zu tun, was ich möchte.


    Hat jemand nen Tipp?

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Das Problem hast du ja schon selber erkannt. Der Listview bringt selber schon die Scrollingfunktionalität mit und sollte somit auch niemals in einen Scrollview verschachtelt werden.


    Dein Match Parent kann also nicht wirklich funktionieren, weil Parent unendlich gross ist.
    Die einzige Möglichkeit die ich sehe. Du musst deinen beiden Listviews eine feste Größe geben, dann kannst du in denen hin und her scrollen und in der deiner Scrollview ebenfalls.
    --> Listview sollte dann aber irgendwie noch einen Rand haben, bzw niemals den ganzen Bildschirm füllen, sonst kommst du mit deinen Fingern nicht mehr dazu den scrollview zu scrollen, weil er komplett überdeckt wird.




    Ich hatte mal ein ähnliches Problem und habe mir die 5 Einträge im Listview von der Größe zurückgeben lassen und den Listview dann auf diese Größe gesetzt- sprich dynamisch zur Laufzeit. (falls du dein hardgecodedetes XMl möchtest)

  • Kannst du nicht einfach die drei Sachen auf drei Activitys aufteilen? :)

    MfG,
    Christopher


    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke

  • Erst einmal danke für die Antworten. :)


    kogoro
    Falls du Fragmente meinst: Ich möchte bis 2.1 unterstützen und traue der nachwirkend eingebauten Aufwärtskompatibilität nicht über den Weg.
    Falls du drei komplett losgelöste Activities mit drei eigenen Views, also drei unterschiedliche Screens meinst: können ja, dürfen nein. ;)


    killphil75
    Oh weh, das klingt ja spaßig...
    Ich überlege gerade, ob ich es irgendwie hinbekomme, nur ein ListView mit zwei unterschiedlichen Objekten zu füttern.
    Vermutlich muss ich dafür irgendwas Generisches bauen - nur kann ich das auch in unterschiedliche Sektionen aufteilen?


    Ich glaube, ich versuche es mal so wie hier dargestellt:
    ListView Sectioned Headers in Android


    Wäre doch gelacht, wenn ich das nicht geregelt bekäme. ;)


    // Nachtrag
    Läuft soweit. Jetzt muss ich nur noch schauen, warum er mir ab und an abkachelt, wenn ich zu schnell scrolle. ^^ Ah, liegt wohl am ConvertView. Ich seh schon, mit unterschiedlichem Layout-Aufbau wird's noch komplexer. ^^

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

    2 Mal editiert, zuletzt von Lucas de Vil ()

  • Fazit: endlich läuft es.


    Diese Mischung unterschiedlicher Views ist ziemlich nervenaufreibend, vor Allem bei der Arbeit mit dem ViewHolder Pattern.
    Aber: nichts, was sich nicht lösen lässt. :)

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

Jetzt mitmachen!

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