一、去掉ListView默认的黑线
1、listView.setDividerHeight(0);
2、this.getListView().setDivider(null);
3、android:divider="@null"
android:cacheColorHint="#00000000",设置其为透明,默认为黑色。
二、记录和回复ListView的位置
1、记录ListView滚动到的位置的坐标,然后利用ListView.scrollTo精确的进行恢复
listView.setOnScrollListener(new OnScrollListener() {
/**
* 滚动状态改变时调用
*/
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// 不滚动时保存当前滚动到的位置
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
if (currentMenuInfo != null) {
scrolledX = statusListView.getScrollX();
scrolledY = statusListView.getScrollY();
}
}
}
/**
* 滚动时调用
*/
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
在恢复位置时调用
listView.scrollTo(scrolledX, scrolledY);
2、记录listview显示在屏幕上的第一个item的位置,然后利用listView.setSelection恢复(无法精确恢复到原位置,只能定位到每个item的位置)
listView.setOnScrollListener(new OnScrollListener() {
/**
* 滚动状态改变时调用
*/
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// 不滚动时保存当前滚动到的位置
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
position = statusListView.getFirstVisiblePosition();
}
}
/**
* 滚动时调用
*/
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
在恢复位置时调用
listView.setSelection(position);
3、通知listview的适配器数据变更
这种用于listview追加数据的情况,是保持滚动位置不变。
listDataAdapter.getDataList.addAll(newDataList());
listDataAdapter.notifyDataSetChanged();
三、ListView常见问题
1、listview拖动时背景图片消失变成黑色背景,拖动完毕背景图片又显示出来。解决方法:android:scrollingCache="false"
2、listview的上边和下边有黑色的阴影。解决方法:android:fadingEdge="none"
3、listview的每一项之间需要设置一个图片作为间隔。解决方法:android:divider="@drawable/xx图"
四、GridView属性介绍
1、columnWidth:列宽
2、horizontalSpacing、verticalSpacing:两行/列之间的间距
3、numColumns:列数
4、stretchMode:缩放模式。android:stretchMode="columnWidth"缩放与列宽大小同步。
5、android:listSelector="#00000000"去除选中时的黄色底色。
selector用法:
首先在drawable/xx.xml文件中定义;然后引用这些xml文件,三种方式:1)在listview中设置android:listSelector="@drawable/xx.xml"2)在listview的item中设置android:background="@drawable/xx.xml";3)在java代码中使用Drawable drawable=getResources().getDrawable(xx.xml); listView.setSelector(drawable);