Aka*_*a93 4 c# xamarin xamarin.forms
正如标题所述
是否可以隐藏ScrollViewXamarin.Forms中的滚动条而无需为每个平台创建自定义渲染器?
我似乎无法找到任何未使用自定义渲染器的答案,建议或示例.
Ger*_*uis 13
编辑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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
在命名空间声明上方放置此行;
[assembly: ExportRenderer(typeof(ScrollView), typeof(ScrollViewExRenderer))]
Run Code Online (Sandbox Code Playgroud)
现在你的ScrollViews不应该显示任何滚动条
嘿,这似乎有点晚发布答案,但由于你没有选择答案,我将发布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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
对于.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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
对不起.IOS我无法确认我的代码是否正常,因为我没有mac.