Как установить представление НЕ прокручивать с scrollview в Java - PullRequest
4 голосов
/ 15 марта 2011

возможно ли программно принудительно заставить View внутри ScrollView НЕ прокручиваться?

Как и буквенные названия в списке контактов. Панель «A» не прокручивается, когда пользователь прокручивает список всех контактов, имена которых начинаются с «A». Когда пользователь прокручивает до конца «A», панель «B» просто прокручивается вверх от нижней части ScrollView, в конце концов, снова помещая «A» вверху и оставаясь там.

Мое описание абстрактное, надеюсь, вы понимаете.

Также заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 15 марта 2011

Список контактов использует ListView, а не ScrollView. Один способ, которым я думаю, что это может быть сделано, должен иметь фиксированный заголовок наверху. Вы можете изменить его содержимое в зависимости от того, что отображается на экране.

Прикрепите OnScrollListener к ListView. Вы получите вид с первой видимой позицией в OnScroll. Затем измените содержимое заголовка в соответствии с содержимым в представлении.

Вам не нужно добавлять заголовок в вашем ListView для первого раздела в вашем списке, поскольку он уже будет обработан в вашем ScrollListener. Сохраняйте стиль для строк заголовка и вида сверху одинаково, и у вас будет иллюзия для фиксированного заголовка.

2 голосов
/ 11 октября 2012

Как уже упоминалось ранее, вам нужен ListView.Для эффекта, подобного таковому в приложении People в Android 4+, я использовал эту превосходную библиотеку (бесплатный и открытый).

2 голосов
/ 15 марта 2011

Я думаю, что вам нужно сочетание подхода «статический текст» с «заголовками разделов» в ScrollView: список должен содержать отключенные / не нажимаемые элементы с буквами «A», «B» и т. Д. Когдазаголовок раздела прокручивается над верхней частью представления, изменяя содержимое статического TextView над ScrollView на содержимое заголовка.То есть, когда элемент заголовка «B» прокручивается вне поля зрения, TextView теперь содержит «B».

Конечно, трудная часть будет обнаруживать, когда «заголовок раздела» прокручивается сверху или приходитпри прокрутке в противоположном направлении.

Для бонусных точек используйте анимацию «push up» в TextView при изменении содержимого, чтобы он выглядел так, как будто элемент списка перемещается в TextView.(Пример этой анимации в приложении API Demos в SDK можно найти в "... \ view \ Animation2.java").

ОБНОВЛЕНИЕ: после дальнейшего просмотра ... вот некоторые классы и т. Д.Связанный с выполнением этой работы (это было забавное упражнение для меня!):

android.widget.AbsListView.OnScrollListener интерфейс, чтобы увидеть, как обнаружить прокручивающиеся события.Вам нужно будет отслеживать предыдущую позицию «сверху обзора», чтобы определить, в каком направлении вы прокручиваете (чтобы выбрать анимацию скольжения или опускания).

Анимация, которую я перечислил выше, не совсемчто вы хотите - лучше взглянуть на класс android.widget.TextSwitcher и файлы push*.xml в каталоге SDK / android-X / data / res / anim.

Вам наверняка понадобится собственный адаптерподкласс для добавления видов в список: getView(...) может по-разному задавать свойства представления строки (bkgnd, стиль текста и т. д.), если строка является заголовком раздела или нет.Повторно используйте этот код в своей фабрике представлений TextSwitcher, чтобы заполнить статический TextView / Switcher над списком.

Веселитесь ...!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...