Normalmente, não vamos nidificar a ListView no ScrollView, mas tudo bem se o entrevistador insistir que eu ninho.
A adição de um ListView a um ScrollView fará com que o controle da ListView seja incompleto e, geralmente, apenas um será exibido. Qual é o motivo?
O conflito de eventos de rolagem entre os dois controles resulta em . Portanto, é necessário calcular a altura da exibição da ListView através do número de itens no ListView para torná -lo totalmente exibido. O método a seguir é fornecido para sua referência.
A solução é a seguinte:
lv = (listView) findViewById (r.id.lv); adaptador = new MyAdapter (); lv.setAdapter (adaptador); setListViewHeightBasedOnchildren (LV); ----------------------------------------------- if (listAdapter == null) {return; } int totalHeight = 0; for (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.getDividerHeight () * (listAdapter.getCount () - 1)); params.Height += 5; listView.setLayoutParams (params); }A melhor maneira de lidar com isso nesta fase é: Custom ListView, sobrecarregar o método OnMeasure () e definir todos os displays.
importar android.widget.listView; / ** * * @Description: Uma implementação simples da ListView incorporada em scrollView * * @File: scrollViewWithListView.java * * * @version */ public class scrlViewWithListView ListView {publicViewWithListView (Android.Content.ContetVEXTView {publicView.utilView; } / ** * Integer.Max_Value >> 2. Se não estiver definido, a configuração padrão do sistema é exibir duas peças * / public void onMease (int widthmeasurespec, int a altitudeMeasurespec) {int expandspec = measespec.makemeasespec (integger.max_value>>> Super.onMeasure (WidthMeasurespec, expandSpec); }}O conteúdo acima é a solução para incorporar a ListView no ScrollView que o editor apresentou a você. Espero que seja útil para todos!