当前位置:  开发笔记 > 编程语言 > 正文

我们可以在ScrollView Xamarin.Forms中隐藏滚动条

如何解决《我们可以在ScrollViewXamarin.Forms中隐藏滚动条》经验,为你挑选了2个好方法。

正如标题所述

是否可以隐藏ScrollViewXamarin.Forms中的滚动条而无需为每个平台创建自定义渲染器?

我似乎无法找到任何未使用自定义渲染器的答案,建议或示例.



1> Gerald Versl..:

编辑2018年3月7日: for Googleability:合并PR,将此功能添加到默认的Xamarin.Forms工具包中.它应该很快在NuGets中发布.

原始答案:

如评论中所述,如果不使用a,则无法实现此目的CustomRenderer.

ScrollViewExRenderer在你的iOS和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 -= OnElementPropertyChanged;

        e.NewElement.PropertyChanged += OnElementPropertyChanged;

    }

    protected void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
    {
        if (ChildCount > 0)
        {
            GetChildAt(0).HorizontalScrollBarEnabled = false;
            GetChildAt(0).VerticalScrollBarEnabled = false;
        }
    }
} 

在命名空间声明上方放置此行;

[assembly: ExportRenderer(typeof(ScrollView), typeof(ScrollViewExRenderer))]

现在你的ScrollViews不应该显示任何滚动条



2> Zany..:

嘿,这似乎有点晚发布答案,但由于你没有选择答案,我将发布android和Windows项目的程序.杰拉德给出的答案在某些时候可能是真的,但是我无法让它起作用,因为xamarin已经发生了很大变化.

在.DROID和.UWP项目中创建一个新类,并添加以下代码

对于.UWP

using Windows.UI.Xaml.Controls;
using System.ComponentModel;
using Xamarin.Forms;
using Xamarin.Forms.Platform.UWP;

[assembly: ExportRenderer(typeof(ScrollView), typeof(App3.UWP.Scrollbardisabledrenderer))]

namespace App3.UWP
{
    public class Scrollbardisabledrenderer : ScrollViewRenderer
    {
        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {


            Control.HorizontalScrollBarVisibility = ScrollBarVisibility.Hidden;
            Control.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden;

        }


    }

}

对于.DROID

using System.ComponentModel;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;



[assembly: ExportRenderer(typeof(ScrollView), typeof(App3.Droid.Scrollbardisabledrenderer))]

namespace App3.Droid
{
    public class Scrollbardisabledrenderer : 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)
        {


                this.HorizontalScrollBarEnabled = false;
                this.VerticalScrollBarEnabled = false;



        }
    }
}

对不起.IOS我无法确认我的代码是否正常,因为我没有mac.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有