4
469110
Gast
Hallo,
ich möchte eine ListView anzeigen. Die ListView soll so hoch sein wie der Inhalt damit der Content unter der ListView mit Scrollen noch zu sehen ist.
Das Problem dabei ist das ich es noch nicht hinbekommen habe eine Höhe zu ermitteln bevor die Items der ListView gerendert wurden.
Ich habe diese Methode hier, aber die liefert mir nicht die richtige Höhe der Items zurück.
Kennt jemand eine Möglichkeit um das zuverlässiger hinzubekommen?
Liebe Grüße
ich möchte eine ListView anzeigen. Die ListView soll so hoch sein wie der Inhalt damit der Content unter der ListView mit Scrollen noch zu sehen ist.
Das Problem dabei ist das ich es noch nicht hinbekommen habe eine Höhe zu ermitteln bevor die Items der ListView gerendert wurden.
Ich habe diese Methode hier, aber die liefert mir nicht die richtige Höhe der Items zurück.
Code:
private boolean setListViewHeightBasedOnItems() {
ListAdapter listAdapter = 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, this);
float px = 500 * (getResources().getDisplayMetrics().density);
item.measure(View.MeasureSpec.makeMeasureSpec((int) px, View.MeasureSpec.AT_MOST), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
totalItemsHeight += item.getMeasuredHeight();
}
// Get total height of all item dividers.
int totalDividersHeight = getDividerHeight() *
(numberOfItems - 1);
// Get padding
int totalPadding = getPaddingTop() + getPaddingBottom();
// Set list height.
ViewGroup.LayoutParams params = getLayoutParams();
params.height = totalItemsHeight + totalDividersHeight + totalPadding;
setLayoutParams(params);
requestLayout();
//setDynamicHeight(listView);
return true;
} else {
return false;
}
}
Kennt jemand eine Möglichkeit um das zuverlässiger hinzubekommen?
Liebe Grüße