1.android:stackFromBottom="true"让其内容从底部开始显示
2.android:transcriptMode=diszbled取消transcriptmode模式/normal当接收到数据改变的通知,并且当仅仅最后一个选项已经显示在屏幕的时候自动滑到底部/alwaysScroll无论当前列表显示什么选项,列表将会自动滑动到底部显示最新的选项
3.android:cacheColorHint设置listView的背景时,要设置这个属性为"#00000000"透明
4.android:divider分割线(图片、颜色)如果设置为@null.就是没有分隔线,用颜色时。要设置dividerheight
5.android:listSelector设置按下去的颜色
6.当item里面有Button等控件时就会失去焦点导致无法响应事件,这时要在item的布局中设置android:descendantFocusability="blocksDescendants"
7.srcllowview与listview连用时,会出现无法滑动,或者显示不全,只显示一行等问题,这时需要计算listview的高度,在设置适配器之后调用该方法(可能最后一行显示不全,这时要将params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));改为params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1))+一个高度;)但是这个方法有个两个细节需要注意:
一是Adapter中getView方法返回的View的必须由LinearLayout组成,因为只有LinearLayout才有measure()方法,如果使用其他的布局如RelativeLayout,在调用listItem.measure(0, 0);时就会抛异常,因为除LinearLayout外的其他布局的这个方法就是直接抛异常的,没理由…。我最初使用的就是这个方法,但是因为子控件的顶层布局是RelativeLayout,所以一直报错,不得不放弃这个方法。
二是需要手动把ScrollView滚动至最顶端,因为使用这个方法的话,默认在ScrollView顶端的项是ListView,具体原因不了解,求大神解答…可以在Activity中设置:
/**
* 动态设置ListView的高度
* @param listView
*/
public static void setListViewHeightBasedOnChildren(ListView listView) {
if(listView == null) return;
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
// pre-condition
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);
}