Перейти к содержанию
Fire Monkey от А до Я
  • 0

Алфавитный скроллинг для ListView


Rusland

Вопрос

Как можно сделать алфавитный скроллинг подобно этому?

 

3S0YI.jpgandroid-listview-fastscroll-styling-589x

 

Если список очень большой, то прокрутка происходит очень долго. Есть какие-нибудь идеи?

Изменено пользователем Rusland
Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Модераторы

что то типа того нужно сделать, посчитать грубо сколько Item'ов видно

Scrollbar1.Max := Value - Round(ListView1.Height / ListView1.ItemAppearance.ItemHeight);
Ссылка на комментарий
  • 0
Scrollbar1.Max := Value - Round(ListView1.Height / ListView1.ItemAppearance.ItemHeight);

Вот теперь отлично работает :) Надо будет только проверить поведение при коротком и пустом списках (пока скрываю ScrollBar когда в списке меньше 10 элементов)

Ссылка на комментарий
  • 0
В 18.12.2015 в 13:48, Rusland сказал:

Кстати, стандартный ScrollBar можно спрятать, если скопировать в свой проект FMX.ListView.pas

и изменить 


const
...
{$IFDEF ANDROID}
  DefaultScrollBarWidth = 0; // вместо 7
{$ENDIF}

Осталось решить проблему "слепой зоны" ползунка при скроллировании внизу списка.

 

PS. Ну и желательно реализовать плавность хода скроллера (

alphLVS.zip

За прошедший год, видимо, много изменений было: alphLVS.zip не желает компилироваться в Delphi Berlin Update 2. Или я просто что-то не так делаю?

errors.png

Ссылка на комментарий
  • 0
  • Модераторы

Если использовать modernLV, то удалить нужно хелпер для TListView и использовать аналогичные методы из modernLV.

Хелперам стали недоступны приват секции, поэтому в Берлине не работает

Ссылка на комментарий
  • 0
В 10.01.2017 в 11:08, Равиль Зарипов (ZuBy) сказал:

Если использовать modernLV, то удалить нужно хелпер для TListView и использовать аналогичные методы из modernLV.

Хелперам стали недоступны приват секции, поэтому в Берлине не работает

Заранее прошу прощения за свои кривые руки, но ни фига не получается. Есть возможность сделать рабочий пример для Delphi Berlin Update 2?

Ссылка на комментарий
  • 0
  • Модераторы
23 минуты назад, rakhmet сказал:

Заранее прошу прощения за свои кривые руки, но ни фига не получается. Есть возможность сделать рабочий пример для Delphi Berlin Update 2?

на андроиде не проверял, но должно работать

alphaLVS_Berlin.zip

Ссылка на комментарий
  • 0
В 18.12.2015 в 13:48, Rusland сказал:

Кстати, стандартный ScrollBar можно спрятать, если скопировать в свой проект FMX.ListView.pas

и изменить 


const
...
{$IFDEF ANDROID}
  DefaultScrollBarWidth = 0; // вместо 7
{$ENDIF}

Осталось решить проблему "слепой зоны" ползунка при скроллировании внизу списка.

Под "слепой зоной" имелся данный эффект?

 

blindzone.gif

Ссылка на комментарий
  • 0
В 14.01.2017 в 21:47, Равиль Зарипов (ZuBy) сказал:

на андроиде не проверял, но должно работать

alphaLVS_Berlin.zip

 

В предыдущем сообщении видно, как "не до конца" работает скролл:

ScrollBar1.Max := ListView1.ItemCount - Round(ListView1.Height / ListView1.ItemAppearance.ItemHeight);

 

 

С вычислением видимых строк можно добиться небольшого тюнинга, который заменит один баг другим, менее критичным в плане usability, но не менее критичным в визуальном плане:

ScrollBar1.Max := ListView1.ItemCount - Round(ListView1.Height / ListView1.ItemAppearance.ItemHeight) + ListView1.getVisibleCount;

scroll.gif

 

 

 

Не нравится, что скролл на обоих гифках, как видно, ведёт себя чуть-чуть не так (на первой гифке скролл не пролистывает список до конца, на второй - листает список до конца, но отскакивает при касании непосредственно списка), как ведут себя скроллы в остальных приложениях. Мне хотелось бы узнать, есть ли способ улучшить его поведение, или это by design "потому что FM!", и мне просто нужно смириться с его (скролла) поведением и перестать поднимать тему годичной давности?

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...