【发布时间】:2016-08-23 04:51:50
【问题描述】:
我正在实现我的自定义选项卡控件,但是我遇到了一个问题,我在水平模式下使用滚动视图来创建滚动选项卡,目前我正在获取滚动条,但我只想隐藏它并制作一个相同的选项卡控件安卓。 有没有直接的解决办法?
【问题讨论】:
标签: xamarin xamarin.ios xamarin.android xamarin.forms
我正在实现我的自定义选项卡控件,但是我遇到了一个问题,我在水平模式下使用滚动视图来创建滚动选项卡,目前我正在获取滚动条,但我只想隐藏它并制作一个相同的选项卡控件安卓。 有没有直接的解决办法?
【问题讨论】:
标签: xamarin xamarin.ios xamarin.android xamarin.forms
我认为他们没有任何可用的直接解决方案。您只需通过扩展默认滚动视图渲染器来创建自定义渲染器。这就是我所做的,我希望它可以达到你的目的。
Android 特定代码:
[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 特定代码:
[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;
}
}
}
【讨论】: