我在ListView中有许多元素滚动到屏幕外。
我希望在视图的末尾有空白。也就是说,用户应该能够滚动过去最后一个元素,以使最后一个元素位于视口的中间。
我可以使用OverScroller,但我认为这只会使 View 具有像人们在 iPhone 上经常看到的那样有弹性的效果。
有什么我可能忽略的吗?
滚动到底部的屏幕应如下所示:
我在ListView中有许多元素滚动到屏幕外。
我希望在视图的末尾有空白。也就是说,用户应该能够滚动过去最后一个元素,以使最后一个元素位于视口的中间。
我可以使用OverScroller,但我认为这只会使 View 具有像人们在 iPhone 上经常看到的那样有弹性的效果。
有什么我可能忽略的吗?
滚动到底部的屏幕应如下所示:
接受的答案太复杂了, addFooterView 不适合这种事情。正确和简单的方法是设置paddingTop和paddingBottom,并且需要将clipToPadding设置为“false”。在列表视图或网格视图中,添加以下内容:
android:paddingTop="100dp"
android:paddingBottom="100dp"
android:clipToPadding="false"
您将在顶部和底部获得随手指滚动而移动的空白空间。
addFooterView()
方法将该视图添加到列表底部(还有一个addHeaderView()
)测量屏幕高度的代码
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
int screenHeight = display.getHeight();
设置半屏高度的代码:
View layout = inflater.inflate(R.layout.mylistviewfooter, container, false);
ViewGroup.LayoutParams lp = layout.getLayoutParams();
lp.height = screenHeight/2;
layout.setLayoutParams(lp);
myListView.addFooterView(layout);
旁白:当您向任何列表视图添加页脚或标题视图时,必须在添加适配器之前完成。此外,如果您需要在执行此操作后获取您的适配器类,您需要知道调用列表视图的适配器getAdapter()
将返回一个HeaderViewListAdapter的实例,您需要在其中调用它的getWrappedAdapter方法 像这样:
MyAdapterClassInstance myAdapter = (MyAdapterClassInstance) ((HeaderViewListAdapter) myListView.getAdapter()).getWrappedAdapter();
这 100% 有效。在适配器中设置你的代码是这样的
//in getCount
@Override
public int getCount() {
return ArrayList.size()+1;
}
//in getview make your code like this
public View getView(final int i, View view, ViewGroup viewGroup) {
view = inflter.inflate(R.layout.yourlayout, null);
if(i<getCount()-1) {
//your code
}
else{
ViewGroup itemContainer =(ViewGroup) view.findViewById(R.id.container);
itemContainer.setVisibility(View.INVISIBLE);
}
Return view;
}
如果您的应用程序中有多个列表视图,请创建页脚的 xml,如下所示:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:minHeight="200dp"
android:layout_width="match_parent"
android:layout_height="200dp"></LinearLayout>
然后在代码中,使用这个:
listView.addFooterView(LayoutInflater.from(getActivity()).inflate(R.layout.empty200, null));
尝试以下操作:
View footer = new View(getActivity());
footer.setLayoutParams( new AbsListView.LayoutParams( LayoutParams.FILL_PARENT, 100 ));
// 100 is the height, you can change it.
mListView.addFooterView(footer, null, false);