2016-07-06 3 views
0

Ich muss die Listenansicht in Bildlaufansicht implementieren. ich weiß, es ist nicht gut Idee mit ListView in der Bildlaufansicht, aber es ist Voraussetzung der App, also muss ich es implementieren. In App im mit TabLayout mit 3 Arten von Tabs wie Kategorien 1, Kategorien 2 und wieder Kategorien 3, um die Daten zu filtern.So legen Sie die dynamische Höhe zur Listenansicht in Fragmentaktivität fest ..?

in den ersten Tab-Kategorien 1 Ich muss 2 Listenansicht hinzufügen, ist eine feste Elemente und zweite ist dynamisch. Fist Listenansicht ist fixiert, so dass ich eine feste Höhe geben kann. aber die zweite Listenansicht ist dynamisch, daher muss die Höhe entsprechend der Gesamtzahl der Werte in der Listenansicht angegeben werden.

Ich versuche viele Möglichkeiten, dynamische Höhe zu geben, aber nicht die Aufgabe zu erledigen.

hier ist Methode i alredy versuchen: -

------------------- erste -------------- ----------------- erste von Frage

Android: How to measure total height of ListView

public static void getTotalHeightofListView(ListView listView) { 

    ListAdapter mAdapter = listView.getAdapter(); 

    int totalHeight = 0; 

    for (int i = 0; i < mAdapter.getCount(); i++) { 
     View mView = mAdapter.getView(i, null, listView); 

     mView.measure(
       View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), 

       View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); 

     totalHeight += mView.getMeasuredHeight(); 
     Log.w("HEIGHT" + i, String.valueOf(totalHeight)); 

    } 

    ViewGroup.LayoutParams params = listView.getLayoutParams(); 
    params.height = totalHeight 
      + (listView.getDividerHeight() * (mAdapter.getCount() - 1)); 
    listView.setLayoutParams(params); 
    listView.requestLayout(); 

} 

----------------- --sekunden ------------------------------- aus Frage https://stackoverflow.com/questions/17693578

public static class ListUtils { 
    public static void setDynamicHeight(ListView mListView) { 
     ListAdapter mListAdapter = mListView.getAdapter(); 
     if (mListAdapter == null) { 
      // when adapter is null 
      return; 
     } 
     int height = 0; 
     int desiredWidth = MeasureSpec.makeMeasureSpec(mListView.getWidth(), MeasureSpec.UNSPECIFIED); 
     for (int i = 0; i < mListAdapter.getCount(); i++) { 
      View listItem = mListAdapter.getView(i, null, mListView); 
      listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED); 
      height += listItem.getMeasuredHeight(); 
     } 
     ViewGroup.LayoutParams params = mListView.getLayoutParams(); 
     params.height = height + (mListView.getDividerHeight() * (mListAdapter.getCount() - 1)); 
     mListView.setLayoutParams(params); 
     mListView.requestLayout(); 
    } 
} 

------------------- ------------------- Fehler

+0

Wie Sie gesagt haben: Tu es nicht. Ich würde empfehlen, einen anderen Ansatz zu verwenden oder uns zumindest Screenshots Ihres aktuellen Zustands zur Verfügung zu stellen. – finki

+0

ok ich wl poste es –

Antwort

0

In Ihrem Aktivität xml-Datei können Sie Linearlayout innerhalb des Scroll verwenden und kann dann zuweisen android: Gewicht Attribut zu ihnen.

Sie können dem einzelnen Element und allen anderen Elementen auf dem eigenen verfügbaren Platz Gewicht zuweisen.

+0

funktioniert nicht mit Gewicht –

+0

Wenn Sie dem ersten Element eine feste Höhe geben, wird der verbleibende Platz automatisch dem zweiten Element zugewiesen. Wenn das zweite Element nicht viel Platz benötigt, bleibt etwas Platz unter ihnen. Sie müssen der Listenansicht keinen dyanischen Platz zuweisen. Es wird automatisch zugewiesen. Sie können 'android: layout_width = wrap_content' verwenden. – Saini

+0

vielen Dank –

0

Bessere Praxis, es ist eine Liste, die dynamische Änderungen der Ansicht unterstützt. Und für Ihre Frage gibt es spezielle Liste - LinkedListView

Verwandte Themen