如何在ListView末尾添加空格?

lfa*_*one 14 user-interface android listview padding android-listview

我在ListView中有许多元素可以滚动屏幕.

我希望View的末尾有空格.也就是说,用户应该能够滚动经过最后一个元素,使得最后一个元素位于视口的中间.

我可以使用OverScroller,但我认为这只会使View具有像iPhone上经常看到的那样的弹性效果.

有什么我可能会忽略的吗?

滚动到按钮的屏幕应如下所示: Android模型,其中有许多标签,其中最后一个位于屏幕中间附近

Xia*_*ang 45

接受的答案太复杂了,addFooterView不适合这种事情.正确和简单的方法是设置paddingTop和paddingBottom,并且需要将clipToPadding设置为"false".在列表视图或网格视图中,添加以下内容:

    android:paddingTop="100dp"
    android:paddingBottom="100dp"
    android:clipToPadding="false"
Run Code Online (Sandbox Code Playgroud)

你会在手指滚动的顶部和底部得到空白区域.

  • 有人注意到如果触摸填充,ListView不会滚动吗?在我的情况下,填充可能是屏幕高度的2/3,所以这对我不起作用.除非有人知道如何使其可滚动? (6认同)

pet*_*tey 15

  1. 为您选择的任何布局充气(这可能是一个XML和ImageView,没有可绘制的设置高度和宽度)
  2. 测量屏幕高度并创建新的LayoutParams并将其高度设置为屏幕高度的1/2
  3. 在充气视图上设置新布局参数
  4. 使用ListView的addFooterView()方法将该视图添加到列表的底部(还有一个addHeaderView())

用于测量屏幕高度的代码

 WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
 Display display = wm.getDefaultDisplay();
 int screenHeight = display.getHeight();
Run Code Online (Sandbox Code Playgroud)

设置半屏高度的代码:

 View layout = inflater.inflate(R.layout.mylistviewfooter, container, false);
 ViewGroup.LayoutParams lp = layout.getLayoutParams();
 lp.height = screenHeight/2;
 layout.setLayoutParams(lp);
 myListView.addFooterView(layout);
Run Code Online (Sandbox Code Playgroud)

旁白:当您向任何列表视图添加页脚或页眉视图时,必须在添加适配器之前完成.此外,如果您在执行此操作后需要获取适配器类,则需要知道调用listview的适配器getAdapter()将返回HeaderViewListAdapter的实例,您需要在其中调用其getWrappedAdapter方法,如下所示:

 MyAdapterClassInstance myAdapter = (MyAdapterClassInstance) ((HeaderViewListAdapter) myListView.getAdapter()).getWrappedAdapter();
Run Code Online (Sandbox Code Playgroud)

  • FooterView ftw!:) (3认同)