ScrollView позволяет переполнять содержимое
Цель
Я пытаюсь разрешить переполнение scrollview
(а не кликать его дочерние элементы). У меня есть работа с карусельным представлением, но не получается получить тот же результат с помощью scrollview
.
Идея этого состоит в том, чтобы центрировать scrollview
и разрешить переполнение, чтобы содержимое могло выглядеть по центру (используется как вкладки).
код
Использование scrollview
в формах Xamarin:
var scrollView = new ScrollView
{
WidthRequest = 200,
HorizontalOptions = LayoutOptions.Center,
Orientation = ScrollOrientation.Horizontal,
Content = scrollViewContent,
IsClippedToBounds = false
};
Это мой собственный рендерер для scrollview
:
public class CenteredScrollViewRenderer : ScrollViewRenderer
{
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
if (e.OldElement != null || this.Element == null)
return;
if (e.OldElement != null)
e.OldElement.PropertyChanged -= OnElementPropertyChanged;
e.NewElement.PropertyChanged += OnElementPropertyChanged;
}
protected void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (ChildCount > 0)
{
GetChildAt(0).HorizontalScrollBarEnabled = false;
GetChildAt(0).VerticalScrollBarEnabled = false;
GetChildAt(0).OverScrollMode = OverScrollMode.Never;
// Try and disable clip
((ViewGroup)GetChildAt(0)).SetClipToPadding(false);
((ViewGroup)GetChildAt(0)).SetClipChildren(false);
}
}
}
Другие попытки
Я также создал функцию, чтобы пройти через ВСЕ родителей, чтобы отключить отсечение, чтобы убедиться, что это был родитель, вызывающий проблему. Это все еще не сработало.
Итак, как мы разрешаем содержимое scrollview
переполняться за пределы его границ?
Примечание. Я отмечаю андроид, так как это может быть простое недоразумение встроенного элемента управления.
Обновление:
Пытался изо всех сил сделать образ желаемого эффекта, который я ищу.
![ScrollView]()
Таким образом, большая синяя граница scrollview
находится в середине contentview
. Содержимое прокрутки отображается только внутри самой scrollview
(как всегда работает). Я пытаюсь не обрезать содержимое, поэтому всегда можно увидеть весь контент (переполнение), а не только внутри scrollview
.
Обновление 2:
Следующая ссылка может объяснить эффект, который я получаю лучше, чем у меня. Пожалуйста, взгляните, любой вопрос, дайте мне знать.
Псевдонимы UIScrollView с предварительным просмотром
Примечание.. Я связал события касания вверх, чтобы отключить ограничения обрезки, которые мне нужны, чтобы найти исправление.
Ответы
Ответ 1
Вы можете попробовать тот же подход, что и при отсечении высоты/тени.
Добавьте родительский макет, добавьте дополнение к родительскому макету (для достижения центрированного элемента) и установите clipToPadding=false
в родительском макете.
Поскольку вопрос касается Xamarin, я просто упомянул, что для разработки на базе Android вы можете достичь такого же эффекта с центральной блокировкой с помощью RecyclerView и реализация класса SnapHelper.