{ January 14, 2011... I have given up to use setListViewHeightBasedOnChildren(ListView listView},
instead, I don't put my listview in a scrollview, and then just put other contents
into a listview by using ListView.addHeaderView() and ListView.addFooterView().
http://dewr.egloos.com/5467045 }
ViewGroup (la ViewGroup è contenente TextViews con testo lungo tranne avanzamento riga caratteri) .getMeasuredHeight valore errato di resi ... che è più piccolo dell'altezza reale.ViewGroup {TextView, ...}. GetMeasuredHeight dà valore sbagliato è minore altezza reale
come sbarazzarsi di questo problema?
Ecco il codice Java:
/*
I have to set my listview's height by myself. because
if a listview is in a scrollview then that will be
as short as the listview's just one item.
*/
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
// pre-condition
return;
}
int totalHeight = 0;
int count = listAdapter.getCount();
for (int i = 0; i < count; i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(View.MeasureSpec.AT_MOST, View.MeasureSpec.UNSPECIFIED);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
}
e qui è il list_item_comments.xml:
Questo mi ha davvero aiutato. Molte grazie! – myforums
@ user711058 ho lo stesso problema ma questo risolve il problema non funziona – anshul
Questa risposta mi ha aiutato a risolvere un problema su cui ho lavorato per un po '. Il mio problema deriva da una mancanza di comprensione di come la misura ha funzionato. La mia vista figlio utilizzava match_parent per la sua larghezza, ma la mia chiamata di misura utilizzava MeasureSpec.makeMeasureSpec (0, MeasureSpec.UNSPECIFIED) per il parametro width. La modifica del parametro width su MeasureSpec.makeMeasureSpec (getWidth(), MeasureSpec.EXACTLY) mi ha consentito di ottenere l'altezza corretta dalla vista chiamando view.getMeasuredHeight(). Grazie! – DalvikDroid