首页 文章

如何在scrollview xamarin表单中隐藏滚动条?

提问于
浏览
2

我正在实现我的自定义选项卡控件,但我很震惊的问题,我在水平模式下使用scrollview创建滚动标签,这里目前我得到滚动条但我只是想隐藏这个并使一个选项卡控件与android相同 . 有没有直接的解决方案?

1 回答

  • 4

    我认为他们没有直接的解决方案 . 您只需通过扩展默认滚动视图渲染器来创建自定义渲染器 . 这就是我所做的,我希望它可以满足你的目的 .

    Android Specific Code:

    [assembly: ExportRenderer(typeof(Xamarin.Forms.ScrollView), typeof(ResponsiveFramework.Droid.ScrollViewEXRenderer))]
    namespace ResponsiveFramework.Droid
    {
        public class ScrollViewEXRenderer : 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 -= OnElementPropetyChanged;
                }
    
                e.NewElement.PropertyChanged += OnElementPropetyChanged;
            }
    
            private void OnElementPropetyChanged(object sender, PropertyChangedEventArgs e)
            {
                if (ChildCount > 0)
                {
                    GetChildAt(0).HorizontalScrollBarEnabled = false;
                }
            }
        }
    }
    

    iOS Specific Code:

    [assembly: ExportRenderer(typeof(Xamarin.Forms.ScrollView), typeof(ResponsiveFramework.iOS.ScrollViewEXRenderer))]
    namespace ResponsiveFramework.iOS
    {
        public class ScrollViewEXRenderer : ScrollViewRenderer
        {
            protected override void OnElementChanged(VisualElementChangedEventArgs e)
            {
                base.OnElementChanged(e);
    
                var result = this.Element.GetValue(ScrollViewPoperty.HorizontalScrollBarVisibleProperty);
                bool IsHorizontalScrollBarVisible = Convert.ToBoolean(result);
                if (IsHorizontalScrollBarVisible == false)
                {
                    if (e.OldElement != null || this.Element == null)
                    {
                        return;
                    }
    
                    if (e.OldElement != null)
                    {
                        e.OldElement.PropertyChanged -= OnElementPropertyChanged;
                    }
    
                    e.NewElement.PropertyChanged += OnElementPropertyChanged;
                }
            }
            private void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
            {
    
                this.ShowsHorizontalScrollIndicator = false;
            }
        }
    }
    

相关问题