Android 如何在ListView的末尾添加空格?

Android 如何在ListView的末尾添加空格?,android,listview,user-interface,android-listview,padding,Android,Listview,User Interface,Android Listview,Padding,我在屏幕上有许多滚动的元素 我希望在视图的末尾有空白。也就是说,用户应该能够滚动最后一个元素,使得最后一个元素位于视口的中间。 我可以使用一个,但我认为这只能使视图具有像iPhone上经常看到的那样的弹性效果 有什么我可能忽略的吗 滚动到botton屏幕的内容应如下所示: 膨胀您选择的任何布局(这可能是XML和ImageView,不可绘制,并具有您选择的设置高度和宽度) 测量屏幕高度并创建新的LayoutParams,并将其高度设置为屏幕高度的1/2 在膨胀视图上设置新布局参数 使用ListV

我在屏幕上有许多滚动的元素

我希望在视图的末尾有空白。也就是说,用户应该能够滚动最后一个元素,使得最后一个元素位于视口的中间。

我可以使用一个,但我认为这只能使视图具有像iPhone上经常看到的那样的弹性效果

有什么我可能忽略的吗

滚动到botton屏幕的内容应如下所示:

  • 膨胀您选择的任何布局(这可能是XML和ImageView,不可绘制,并具有您选择的设置高度和宽度)
  • 测量屏幕高度并创建新的LayoutParams,并将其高度设置为屏幕高度的1/2
  • 在膨胀视图上设置新布局参数
  • 使用ListView的方法将该视图添加到列表底部(还有一个
    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));