Normalerweise werden wir ListView in ScrollView nicht nisten, aber es ist in Ordnung, wenn der Interviewer darauf besteht, dass ich nistet.
Durch das Hinzufügen einer Listansicht zu einem ScrollView wird das ListView -Steuerelement unvollständig und normalerweise wird nur eine angezeigt. Was ist der Grund?
Der Scroll -Ereigniskonflikt zwischen den beiden Kontrollen führt dazu . Daher ist es erforderlich, die Anzeigehöhe der Listansicht über die Anzahl der Elemente in der Listansicht zu berechnen, um sie vollständig anzuzeigen. Die folgende Methode wird für Ihre Referenz bereitgestellt.
Die Lösung lautet wie folgt:
lv = (listView) findViewById (r.id.lv); adapter = new myAdapter (); Lv.SetAdapter (Adapter); setListViewHeightBasedonChildren (LV); ------------------------------------- if (listAdapter == null) {return; } int totalHeight = 0; für (int i = 0; i <listAdapter.getCount (); i ++) {view listItem = listAdapter.getView (i, null, listView); ListItem.Measure (0, 0); TotalHeight += listItem.getMeasuredHeight (); } ViewGroup.layoutParams params = listView.getLayoutParams (); params.height = TotalHeight + (listView.getDivInIndheight () * (listAdapter.getCount () - 1)); params.height += 5; listView.setLayoutParams (Params); }Der beste Weg, um in dieser Phase damit umzugehen, ist: benutzerdefinierte ListView, überlasteten die OnMeasure () -Methode und setzen Sie alle Anzeigen.
android.widget.ListView importieren; /** * * @Description: A simple implementation of embedded listview in scrollview* * @File: ScrollViewWithListView.java * * * @Version */ public class ScrollViewWithListView extends ListView { public ScrollViewWithListView(android.content.Context context, android.util.AttributeSet attrs) { super(context, Attrs); } / ** * Integer.max_value >> 2. Wenn nicht festgelegt ist, wird die Standardeinstellung von Systemen zwei Teile angezeigt. super.onmeasure (widthMaseureSpec, exptspec); }}Der obige Inhalt ist die Lösung für die Einbetten von ListView in ScrollView, die der Editor Ihnen vorgestellt hat. Ich hoffe, es wird für alle hilfreich sein!