1 如果在Dialog 嵌套Listview 如果在list的数据量不稳定的时候 比如有时候有5条 数据 有事20条数据就会导致 如果设置固定高度 会出现空白
2 下面是解决方案
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="260dp" android:layout_height="wrap_content" android:background="@color/white" android:orientation="vertical"> <TextView android:layout_width="fill_parent" android:layout_height="48dp" android:gravity="center" android:text="请选择车型" android:textColor="@color/text1" android:textSize="15dp" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="1dp" android:background="#e6e6e6" /> <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <ListView android:id="@+id/lv_carmodels" android:layout_width="fill_parent" android:layout_height="144dp" android:divider="#e6e6e6" android:visibility="gone" android:dividerHeight="1dp" /> <ListView android:id="@+id/lv_carmodels_2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:divider="#e6e6e6" android:dividerHeight="1dp" /> </FrameLayout> <TextView android:id="@+id/tv_compare" android:layout_width="fill_parent" android:layout_height="48dp" android:gravity="center" android:text="根据配置选车型" android:textColor="@color/blue_2a8cff" android:textSize="16dp" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="1dp" android:background="#e6e6e6" /> <TextView android:id="@+id/tv_cancel" android:layout_width="fill_parent" android:layout_height="48dp" android:gravity="center" android:text="取消" android:textColor="@color/text1" android:textSize="16dp" /> </LinearLayout>
3 用一个framelayout 里面放了 2个listview 一个固定高度的 一个wrap_content的,然后根据list的去决定用哪一个,有点取巧
vinDialog_.setContentView(R.layout.vin_result_dialog); ListView carModelList = (ListView) vinDialog_.findViewById(R.id.lv_carmodels); ListView lv_carmodels_2 = (ListView) vinDialog_.findViewById(R.id.lv_carmodels_2); vinAdapter_ = new VINResultAdapter(this, carModels_); carModelList.setAdapter(vinAdapter_); if (carModels_.size()<=4){ lv_carmodels_2.setAdapter(vinAdapter_); carModelList.setVisibility(View.GONE); lv_carmodels_2.setOnItemClickListener(listener); }else { lv_carmodels_2.setVisibility(View.GONE); carModelList.setAdapter(vinAdapter_); carModelList.setVisibility(View.VISIBLE); carModelList.setOnItemClickListener(listener); }