gpt4 book ai didi

android - ScrollView 允许内容溢出

转载 作者:IT老高 更新时间:2023-10-28 23:35:42 27 4
gpt4 key购买 nike

目标

我试图让 scrollview 溢出(而不是剪辑其子项)。我使用轮播 View 进行此操作,但使用 scrollview 无法获得相同的结果。

这样做的想法是使 scrollview 居中并允许溢出,以便内容看起来居中(用作选项卡)。


代码

在 Xamarin Forms 中使用 scrollview:

 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);
}
}
}

其他尝试

我还创建了一个函数来通过 ALL parent 来禁用剪辑,以查看它是否是导致问题的 parent 。这仍然没有奏效。

那么我们如何让 scrollview 的内容溢出到它的边界之外呢?

注意:我标记的是android,因为这可能是对原生控件的简单误解。


更新:

尽我所能制作我正在寻找的所需效果的图像。 ScrollView

所以蓝色的大边框是contentview中间的scrollview。滚动内容仅在 scrollview 内部时可见(它始终如何工作)。我试图不剪辑内容,以便始终可以看到所有内容(溢出),而不仅仅是在 scrollview 内。


更新 2:

下面的链接可以解释我追求的效果比我有的更好。请看一下,有任何问题请告诉我。

Paging-enabled UIScrollView With Previews

注意:我已将触摸事件关联起来,因此它只是禁用了我需要找到修复方法的剪辑边界。

最佳答案

您可以尝试使用与高程/阴影裁剪相同的方法。

添加父布局,在父布局中添加内边距(实现居中)并在父布局中设置clipToPadding=false

由于问题是关于 Xamarin,我只想提一下,对于原生 Android 开发,您可以使用 RecyclerView 实现相同的中心锁定效果。以及 SnapHelper 的实现类。

关于android - ScrollView 允许内容溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47013871/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com