ScrollView嵌套ListView只显示一行的解决
第一种:可用
用该自定义的listview代替默认listviewpublic class ListViewInScrollView extends ListView {
public ListViewInScrollView(android.content.Context context, android.util.AttributeSet attrs) {
super(context, attrs);
}
/**
* Integer.MAX_VALUE >> 2,如果不设置,系统默认设置是显示两条
*/
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
第二种:试验(暂时不行)
1、解决办法:在notifyDataSetChanged()方法执行之前重新计算ListView的高度2、代码提示:
setListViewHeightBasedOnChildren(listView);//注意:一定要在notifyDataSetChanged()方法之前执行
adapter.notifyDataSetChanged();
/**
* 重新计算ListView的高度
* @param listView
*/
public void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
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));
listView.setLayoutParams(params);
}
ListView去掉默认分割线
1.android:divider="@null"2.android:divider="#00000000" 设为透明
3.setDividerHeight(0) 高度设为0
ListView设置间隙高度
<ListView
android:id="@+id/lv_1"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp
android:dividerHeight="15dp"
></ListView>
ListView设置自定义间隙
1.drawable <?xml version="1.0" encoding="UTF-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@color/grey8">
</inset>
注:还可以添加这类的属性.
(1).android:insetLeft="15dp"
(2).android:insetRight="15dp"
2.ListView
<!--listview-->
<ListView
android:id="@+id/lv_collect"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="@drawable/list_item_divider"
android:dividerHeight="5dp"></ListView>