169 похожих чатов

Как в листе сделать так, чтобы при сильном скролле он

перешел на следующий item, а если проскролил слабо, то вернулся обратно на текущий item?
Не используя сторонние пакеты, pageview и слайдеры.

1 ответов

4 просмотра

Для реализации данного поведения без использования сторонних пакетов, вы можете использовать события скроллинга и сравнение изменения позиции скролла для определения, перейти к следующему элементу или вернуться к текущему. Вот общий алгоритм: 1. Создайте свой пользовательский виджет списка, который будет содержать элементы. 2. Обработайте события скроллинга в вашем виджете. Для этого переопределите методы wheelEvent (для колеса мыши) и/или scrollContentsBy (для других событий скроллинга). 3. В этих методах вы можете отслеживать изменение позиции скролла, например, сохраняя предыдущее значение позиции скролла при каждом вызове. 4. Вычисляйте разницу между текущей позицией скролла и предыдущей позицией. Если разница превышает определенный порог, переходите к следующему элементу в вашем списке. 5. Если разница меньше порога, возвращайтесь обратно к текущему элементу. 6. Для плавного перехода между элементами, вы можете использовать анимацию или изменять положение элемента плавно. 7. Обязательно обновляйте предыдущую позицию скролла после обработки события скроллинга. Это требует некоторой работы, но позволяет реализовать желаемое поведение без использования сторонних библиотек.

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта