我有一个简单的ListView只有几个条目。根据设备大小和方向,ListView需要滚动或不滚动。
我在屏幕上还有一张照片,这不是必需的。如果ListView没有足够的空间而没有滚动,我想删除图片。
当我在活动的onCreate中填充ListView时,getLastVisiblePosition()尚未生效,它返回-1。因此,我无法将最后一个可见项目与列表计数进行比较。
int lastVisiblePos = listView.getLastVisiblePosition(); //返回-1
(如果我稍后点击某个按钮重新检查,则该值是正确的。)
使用onScrollingListener为时已晚,因为图片不应该首先显示。
我正在使用API级别10开发。
有什么建议吗?
答案 0 :(得分:22)
在Runnable中将getLastVisiblePosition()
与getCount()
进行比较,看看整个ListView在绘制后是否适合屏幕。您还应该检查最后一个可见行是否完全适合屏幕。
创建Runnable:
ListView listView;
Runnable fitsOnScreen = new Runnable() {
@Override
public void run() {
int last = listView.getLastVisiblePosition();
if(last == listView.getCount() - 1 && listView.getChildAt(last).getBottom() <= listView.getHeight()) {
// It fits!
}
else {
// It doesn't fit...
}
}
};
在onCreate()
中,在ListView的处理程序中将Runnable排队:
listView.post(fitsOnScreen);
答案 1 :(得分:0)
你为什么要找问题?而不是你的想法,你可以使用3种布局:
ListView lv = (ListView) findViewById(R.id.listView);
View header = getLayoutInflater().inflate(R.layout.header_layout, null);
View footer = getLayoutInflater().inflate(R.layout.foorer_layout, null);
lv.addHeaderView(headerComment);
lv.addFooterView(footerComment);