2011-02-05 2 views
1

В настоящее время я реализую функцию Pull To Refresh в Android. Теперь у меня это работает, создав пользовательский ListView с использованием заголовков над элементами списка. В сущности: при просмотре представления верхнего заголовка через прослушиватель запускается обновление.ListView - установить минимальную высоту, чтобы она всегда позволяла прокручивать

При запуске ListView он автоматически прокручивается под заголовком HeaderViews, скрывая их до тех пор, пока пользователь не прокрутит вниз. Это отлично работает, когда высота элементов списка превышает высоту самого ListView (поэтому есть прокрутка), но когда высота детей меньше высоты ListView, прокрутки и прокрутки HeaderViews не отображаются ,

В принципе, то, что мне нужно, - это заставить область прокрутки ListView быть по крайней мере высотой высоты ListView + моего HeaderViews. У меня уже есть высота моего HeaderViews, я просто не могу найти способ получить фактическую высоту ListView (т. Е. Когда используется fill_parent) и способ установки минимальной высоты прокрутки. Есть идеи?

Это будет выпущено на GitHub после того, как я его закончу, и работает на Android 1.5+.

+0

Просто примечание сказать спасибо за вас r выпуск GitHub. Сэкономил время на то, чтобы исправить все проблемы с реализацией Nilsson! Приветствия. – Devunwired

ответ

1

Я исправил себя, путем добавления footerView в достаточно большом размере:

final int numberHeaderViewsForPullToRefresh = 2; 


@Override 
protected void onSizeChanged(int w, final int h, int oldw, int oldh) { 
    super.onSizeChanged(w, h, oldw, oldh); 

    if (this.getCount() > numberHeaderViewsForPullToRefresh) { 

     // This is from Droid-Fu. Converts dip to px 
     final int size = DisplaySupport.dipToPx(getContext(), 60); 
     int childViewHeight = (this.getCount() - numberHeaderViewsForPullToRefresh) * size; 

     Utils.writeLog("Child Views Height: " + childViewHeight); 

     if (childViewHeight < h) { 
      this.removeFooterView(footerPad); 
      footerPad.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, h - childViewHeight)); 
      this.addFooterView(footerPad, null, false); 
     } 
    } 

} 
0

я столкнулся с такой же, но получил его суммарно решен ...

я не устанавливать какие-либо колонтитулы к моему ListView вместо я увеличить общее количество элемента списка на 2

говорят, у меня есть список 10 item, то мой список показывает мне 12 просмотров ..

при раздувании вида в адаптерах метод getView() i проверяет позицию и раздувает верхний и нижний колонтитулы для первой и последней позиции. для отдыха я применяю свой необходимый вид к элементу списка. Это решение для меня наверняка.

и он работал слишком проверить следующую ссылку в этом я написал код, чтобы правильно использовать просмотр списка.

Change ListView background - strange behaviour

в этом коде вы найдете GetView Mathod сделать его надуть другое представление верхнего колонтитула, и список остального

Если вы делаете это, то его нормально, иначе я помещу еще немного свет к нему ..

+0

Я не уверен, как это отвечает на мой вопрос. Проблема в том, что у меня только один или два элемента в моем списке, список не достаточно длинный, чтобы прокручивать, поэтому они всегда отображаются. Мне нужно расширить список, чтобы в списке было достаточно места для прокрутки и скрытия заголовков. –

+0

Это решение будет актуальным для прокрутки верхнего и нижнего колонтитула вдоль списка. OK, так что вам нужен список с меньшим количеством элементов для прокрутки? – Javanator

+0

HeaderViews может прокручиваться, когда вы добавляете их через 'addHeaderView' в любом случае. Я хочу, чтобы ListView всегда прокручивал. –

Смежные вопросы