我试图允许scrollview
溢出(不剪辑其子节点)。我使用旋转木马视图,但使用scrollview
无法获得相同的结果。
这样做的想法是使scrollview
居中并允许溢出,以便内容可以看起来居中(用作标签)。
在Xamarin表格中使用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 父级来禁用剪辑,看它是否是导致问题的父级。这仍然没有奏效。
那么我们如何允许scrollview
内容超出其范围?
注意:我正在标记android,因为这可能是对原生控件的一个简单误解。
所以大蓝色边框是scrollview
中间的contentview
。滚动内容仅在scrollview
本身内部可见时(它始终如何工作)。我试图不剪辑内容,因此总能看到所有内容(溢出),而不仅仅是scrollview
内部。
以下链接可以解释我之后的效果。请看一下,任何问题都让我知道。
Paging-enabled UIScrollView With Previews
注意:我已将触摸事件链接起来,因此它只会禁用我需要找到修复的剪辑边界。
答案 0 :(得分:4)
您可以尝试使用与高程/阴影剪裁相同的方法。
添加父布局,向父布局添加填充(以实现居中项目)并在父布局中设置clipToPadding=false
。
由于问题是关于Xamarin,我只是提到,对于原生Android开发,您可以使用RecyclerView和SnapHelper类的实现实现相同的中心锁定效果。