ScrollView允许内容溢出

Rud*_*ddy 17 android xamarin.android xamarin xamarin.forms

目标

我试图让a scrollview溢出(不剪辑它的孩子).我有一个旋转木马视图,但不能得到相同的结果scrollview.

这样做的想法是scrollview使溢出居中并允许溢出,以便内容可以看起来居中(用作标签).


使用scrollviewXamarin表格:

 var scrollView = new ScrollView
 {
    WidthRequest = 200,
    HorizontalOptions = LayoutOptions.Center,
    Orientation = ScrollOrientation.Horizontal,
    Content = scrollViewContent,
    IsClippedToBounds = false
 };
Run Code Online (Sandbox Code Playgroud)

这是我的自定义渲染器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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

其他尝试

我还创建了一个函数来遍历所有父项以禁用剪辑,只是为了查看它是否是导致问题的父级.这仍然没有奏效.

那么我们如何允许scrollview内容超出其范围?

注意:我正在标记android,因为这可能是对本机控件的简单误解.


更新:

我尽力做出我想要的效果图像. 滚动型

因此,大蓝色边框scrollview位于中间contentview.滚动内容仅在内部时可见scrollview(它如何始终有效).我试图不剪辑内容,所以总能看到所有内容(溢出),而不仅仅是内部scrollview.


更新2:

以下链接可以解释我之后的效果.请看一下,任何问题都让我知道.

启用了分页的UIScrollView预览

注意:我已将触摸事件链接起来,因此它只会禁用我需要找到修复的剪切边界.

dam*_*ian 5

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

添加父布局,在父布局中添加padding(实现item居中)并clipToPadding=false在父布局中设置。

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