Как добавить пустое пространство в конец ListView?

У меня есть ряд элементов в ListView, которые прокручиваются с экрана.

Я хотел бы, чтобы там было пустое пространство в конце представления. То есть пользователь должен иметь возможность прокручивать последний элемент таким образом, чтобы последний элемент находился посередине окна просмотра.

Я мог бы использовать OverScroller , но я думаю, что это позволило бы только View, чтобы иметь бодрый эффект, который часто видят на iPhone.

Есть ли что-то, что я мог упустить?

Скроллированный экран должен выглядеть примерно так: Android-макет, где есть несколько ярлыков, последний из которых находится около середины экрана

Solutions Collecting From Web of "Как добавить пустое пространство в конец ListView?"

  1. Наполните любой макет по вашему выбору (это может быть XML и ImageView без рисования и с установленной высотой и шириной по вашему выбору)
  2. Измерьте высоту экрана и создайте новые LayoutParams и установите высоту его на 1/2 высоты экрана
  3. Задайте новые параметры макета на вашем увеличенном виде
  4. Используйте метод addFooterView() ListView, чтобы добавить это представление в addHeaderView() списка (есть также 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() вернет экземпляр HeaderViewListAdapter, в котором вам нужно будет вызвать его метод getWrappedAdapter. Что-то вроде этого:

  MyAdapterClassInstance myAdapter = (MyAdapterClassInstance) ((HeaderViewListAdapter) myListView.getAdapter()).getWrappedAdapter(); 

Принимаемый ответ слишком сложный, и 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; } 

Попробуйте следующее:

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