Wie kann ich Listview automatisch so skalieren, dass es nicht scrollt

8

zur Zeit habe ich das folgende Layout

%Vor%

die Listenansicht, die ich auskommentiert habe, habe ich versucht, dies in der XML zu machen, mit der Höhe, die auf wrap_content, fill_parent gesetzt wird, zurzeit mache ich das programmatisch mit dem folgenden Code

%Vor%

das ist das Ergebnis

Sie können in diesem Bild sehen, dass, da ich die Listview in einem linearen Layout für die abgerundete Ecke lese, es nicht nur automatisch die gesamte ListView enthält, gibt es eine Möglichkeit, die beiden zu haben Elemente wickeln den Inhalt einfach vertikal, so dass kein Scrollen stattfindet, ohne dass ich die Höhe programmatisch einstellen muss? ? ?

Ich denke, eine andere Sache, die ich erwähnen sollte, ist, dass ich all dieses Layout in einer Scrollansicht habe, weil ich möchte, dass diese Listenansicht ein winziger Unterabschnitt des gesamten Layouts ist, also wäre es so etwas wie

-Scrollansicht
  Textansicht
  Textansicht

  -Linearlayout
    -listview

  - Schaltfläche

Hier ist ein einfacheres Layout dessen, was ich habe

%Vor%     
slim 17.08.2010, 19:19
quelle

2 Antworten

18

ListViews werden nicht in ScrollViews angezeigt.

ListView dient zum effizienten Anzeigen eines begrenzten Fensters in ungebundenen Inhalten. Wenn Sie "scrollen" auf einer ListView deaktivieren würden, um sie in eine ScrollView einzufügen, verlieren Sie alle praktischen Gründe für die Verwendung einer ListView an erster Stelle.

Wenn Sie eine ListView verwenden möchten, um viele Inhalte oder unbegrenzten Inhalt anzuzeigen, aber auch Inhalte darüber und darunter scrollen, fügen Sie der ListView Kopf- oder Fußzeilenansichten hinzu, indem Sie %Co_de% oder addHeaderView . Wenn der Inhalt der Liste ein kleiner Teil Ihres Gesamtlayouts ist, wie Sie es beschreiben, ist dies wahrscheinlich nicht der beste Ansatz für Sie.

Wenn Sie einen kleinen, begrenzten Inhalt haben, können Sie fortfahren und eine ScrollView verwenden und programmgesteuert untergeordnete Ansichten für Ihre "Listenelemente" generieren, wo es angemessen ist.

Ein gebräuchliches Muster, das im Rahmen verwendet wird, um überhöhten XML-Inhalt mit programmatisch erzeugtem Inhalt zu mischen, ist das Hinzufügen einer Platzhalteransicht in der Layout-XML, normalerweise ein addFooterView oder LinearLayout . Verwenden Sie FrameLayout , um es zur Laufzeit zu finden und generierte untergeordnete Ansichten hinzuzufügen.

Sie könnten sogar noch findViewById mit dieser Methode verwenden, wenn Sie bereits eine geschrieben haben, rufen Sie einfach ListAdapter in einer Schleife für alle Adapterpositionen auf ( content.addView(adapter.getView(position, null, content)) ist die Platzhalteransicht, die Sie mit content gefunden haben) . Beachten Sie, dass dies nur praktisch ist, wenn Sie wissen, dass Sie eine kleine Anzahl von Listenelementen im Adapter haben!

    
adamp 17.08.2010, 21:39
quelle
0

Fügen Sie ein leeres Element am Ende der Liste hinzu

Beispiel:

%Vor%     
please delete me 07.04.2015 06:30
quelle