Rud*_*ddy 17 android xamarin.android xamarin xamarin.forms
我试图让a scrollview
溢出(不剪辑它的孩子).我有一个旋转木马视图,但不能得到相同的结果scrollview
.
这样做的想法是scrollview
使溢出居中并允许溢出,以便内容可以看起来居中(用作标签).
使用scrollview
Xamarin表格:
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
.
以下链接可以解释我之后的效果.请看一下,任何问题都让我知道.
注意:我已将触摸事件链接起来,因此它只会禁用我需要找到修复的剪切边界.
您可以尝试与高程/阴影剪辑相同的方法。
添加父布局,在父布局中添加padding(实现item居中)并clipToPadding=false
在父布局中设置。
由于问题是关于 Xamarin 的,我只提一下,对于原生 Android 开发,您可以使用RecyclerView和SnapHelper类的实现实现相同的中心锁定效果。