Android 如何在ListView的末尾添加空格?
我在屏幕上有许多滚动的元素 我希望在视图的末尾有空白。也就是说,用户应该能够滚动最后一个元素,使得最后一个元素位于视口的中间。 我可以使用一个,但我认为这只能使视图具有像iPhone上经常看到的那样的弹性效果 有什么我可能忽略的吗 滚动到botton屏幕的内容应如下所示:Android 如何在ListView的末尾添加空格?,android,listview,user-interface,android-listview,padding,Android,Listview,User Interface,Android Listview,Padding,我在屏幕上有许多滚动的元素 我希望在视图的末尾有空白。也就是说,用户应该能够滚动最后一个元素,使得最后一个元素位于视口的中间。 我可以使用一个,但我认为这只能使视图具有像iPhone上经常看到的那样的弹性效果 有什么我可能忽略的吗 滚动到botton屏幕的内容应如下所示: 膨胀您选择的任何布局(这可能是XML和ImageView,不可绘制,并具有您选择的设置高度和宽度) 测量屏幕高度并创建新的LayoutParams,并将其高度设置为屏幕高度的1/2 在膨胀视图上设置新布局参数 使用ListV
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);
旁白:
向任何listview添加页脚或页眉视图时,必须在添加适配器之前完成。此外,如果在完成此操作后需要获取适配器类,则需要知道通过getAdapter()
调用listview的适配器将返回一个实例,您需要在其中调用其方法
大概是这样的:
MyAdapterClassInstance myAdapter = (MyAdapterClassInstance) ((HeaderViewListAdapter) myListView.getAdapter()).getWrappedAdapter();
尝试以下方法:
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);
公认的答案太复杂了,addFooterView不适合这种情况。正确而简单的方法是设置paddingTop和paddingBottom,您需要将clipToPadding设置为“false”。在列表视图或网格视图中,添加以下内容:
android:paddingTop="100dp"
android:paddingBottom="100dp"
android:clipToPadding="false"
手指滚动时,顶部和底部都会出现空白。这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;
}
//在getCount中
@凌驾
public int getCount(){
返回ArrayList.size()+1;
}
//在getview中,使您的代码如下所示
公共视图getView(最终int i、视图视图、视图组视图组){
视图=过滤器充气(R.layout.yourlayout,空);
如果(i如果应用程序中有多个ListView,请创建页脚的xml,如下所示:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:minHeight="200dp"
android:layout_width="match_parent"
android:layout_height="200dp"></LinearLayout>
将页脚视图设置为屏幕的一半。@neworld我希望这对您有所帮助!:)从API 13显示。getHeight()被取消了权限。我将给您一个投票,以证明基本正确。我将方法更改为addFooterView()
:)哇。这么简单,但我从来没有想过。谢谢:)我能想到的任何东西都是一个黑客,因为listview不是那样工作的……但是如果position==count-1,你可以在getView中调整列表中最后一个视图的高度。有人注意到如果你触摸填充,listview不会滚动吗?在我的例子中,填充可能是高达屏幕高度的2/3,所以这对我来说不起作用。除非有人知道如何使其可滚动?这是最简单的答案。我们可以将此选项与@petey's组合,将底部空白设置为屏幕高度的1/2。只需添加此代码yourListView.setPadding(0,0,0,height/2)
@darnmason您只对底部填充正确,页眉填充对触摸有响应,您的评论值得投票:)请确保在空页脚视图中使用minHeight,或其他确保视图具有高度的内容(listview有时会调整事物的高度)
listView.addFooterView(LayoutInflater.from(getActivity()).inflate(R.layout.empty200, null));