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
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
ok ich wl poste es –