如何在ListView末尾添加空格?

时间:2012-11-13 18:11:32

标签: android listview user-interface android-listview padding

我在ListView中有许多元素滚动屏幕。

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

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

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

滚动到按钮的屏幕看起来应该是这样的: Android mockup where there are a number of labels the last of which is near the middle of the screen

5 个答案:

答案 0 :(得分:45)

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

    android:paddingTop="100dp"
    android:paddingBottom="100dp"
    android:clipToPadding="false"

您将在手指滚动的顶部和底部获得空白区域。

答案 1 :(得分:15)

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

     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);