Android开发---Listview使用技巧小结

来源:互联网 发布:外戚 知乎 编辑:程序博客网 时间:2024/05/21 06:43

ScrollView嵌套ListView只显示一行的解决

第一种:可用

用该自定义的listview代替默认listview
public 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设置间隙高度

<ListViewandroid:id="@+id/lv_1"android:layout_weight="1"android:layout_width="match_parent"android:layout_height="0dpandroid: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>

1 0