我在ListView中有许多元素滚动屏幕。
我希望View的末尾有空格。也就是说,用户应该能够滚过最后一个元素,使最后一个元素位于视口的中间。
我可以使用OverScroller,但我认为这只会让View具有像iPhone上经常看到的那样的弹性效果。
有什么我可能会忽略的吗?
滚动到按钮的屏幕看起来应该是这样的:
答案 0 :(得分:45)
接受的答案太复杂了,addFooterView不适用于此类事情。正确和简单的方法是设置paddingTop和paddingBottom,并且需要将clipToPadding设置为“false”。在列表视图或网格视图中,添加以下内容:
android:paddingTop="100dp"
android:paddingBottom="100dp"
android:clipToPadding="false"
您将在手指滚动的顶部和底部获得空白区域。
答案 1 :(得分:15)
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()
调用listview的适配器将返回HeaderViewListAdapter的实例,您需要在其中调用getWrappedAdapter } 方法
像这样:
MyAdapterClassInstance myAdapter = (MyAdapterClassInstance) ((HeaderViewListAdapter) myListView.getAdapter()).getWrappedAdapter();
答案 2 :(得分:0)
这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;
}
答案 3 :(得分:0)
如果您的应用中有多个列表视图,请创建页脚的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));
答案 4 :(得分:-3)
请尝试以下操作:
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);