2016-08-01 8 views
-1

Ich verstehe, dass das Hinzufügen eines ListView in einem ScrollView nicht empfehlenswert ist. Aber ich muss eine ListView verwenden, einfach weil ich einen Adapter und verschiedene andere Methoden verwende.Wie erstellt man in einer Listenansicht alle Elemente ohne Scrollen?

Ich habe diesen Code verwendet, den ich auf StackOverflow gefunden habe und er zeigt mir den Großteil meiner Liste. Im Hochformat sind jedoch einige Elemente von unten und im Querformat gleich abgeschnitten.

Wie kann dies behoben werden? Um dies zu verdeutlichen, habe ich eine ScrollView, die ein LinearLayout mit einigen Elementen und meine ListView in meinem XML enthält. Darüber hinaus, wenn ich zu einer neuen Aktivität gehe, dann zurück, kann ich kurz die Bildlaufleisten für die Listenansicht anzeigen und verschwinden sehen. Wie kann dies auch korrigiert werden?

public static boolean setListViewHeightBasedOnItems(ListView listView) { 

     ListAdapter listAdapter = listView.getAdapter(); 
     if (listAdapter != null) { 

      int numberOfItems = listAdapter.getCount(); 

      // Get total height of all items. 
      int totalItemsHeight = 0; 
      for (int itemPos = 0; itemPos < numberOfItems; itemPos++) { 
       View item = listAdapter.getView(itemPos, null, listView); 
       item.measure(0, 0); 
       totalItemsHeight += item.getMeasuredHeight(); 
      } 

      // Get total height of all item dividers. 
      int totalDividersHeight = listView.getDividerHeight() * 
        (numberOfItems - 1); 

      // Set list height. 
      ViewGroup.LayoutParams params = listView.getLayoutParams(); 
      params.height = totalItemsHeight + totalDividersHeight; 
      listView.setLayoutParams(params); 
      listView.requestLayout(); 

      return true; 

     } else { 
      return false; 
     } 

    } 
+0

downvoted, ohne Angabe von Gründen :( – ak1652

+0

Ich denke, es ist am besten, eine Listenansicht mit einem Header zu benutzen? http://stackoverflow.com/questions/7978359/using-listview-how-to-add-a-header-view Scheint gut zu funktionieren. – ak1652

Antwort

0

Verwenden Recycler-view oder Listenansicht und die Verwendung von View-Typ machen, um verschiedene Layouts aufzublasen statt scroolview der Verwendung und andere viewgroups innen Verschachtelung.

+0

Das scheint übermäßig komplex für meine relativ einfache Aktivität.Ich habe etwas Radio Knöpfe und Titel an der Spitze Mit einem Search Fiter und Listview nach. – ak1652

+0

Nein, es wird Ihr Problem vereinfachen und es in mehrere zusammenhängende und Sub-Optima zu brechen l Komponenten (Layouts). –

0

Ich denke, Ihre Frage ist ein bisschen irreführend. Wie um alles in der Welt kann eine listview alle Elemente ohne Scrollen anzeigen, solange wir mit diesen winzigen mobilen Bildschirmen zu tun haben?

Vielleicht möchten Sie, dass scroll bar nicht zeigen, dann können Sie attribute Sets wie folgt auf Ihrem ScrollView:

android:scrollbars="none" 
Verwandte Themen