2016-08-23 24 views
2

私は自分のカスタムタブコントロールを実装していますが、私はスクロールバーを作成するためにスクロールバーを作成するために水平モードでスクロールバーを使用していましたが、ここではスクロールバーを取得していますが、これを隠してアンドロイド。 直接解決はありますか?scrollview xamarinフォームのスクロールバーを非表示にする方法は?

答えて

3

私は彼らのための直接解決策はありません。デフォルトのスクロールビューレンダラーを拡張して、カスタムレンダラーを作成するだけです。ここに私がしたことがあります、私はあなたの目的に役立つことを願っています。

の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; 
     } 
    } 
} 
+0

はこのように見えるは、Androidに固有のものです。問題は、Xamarinフォーム(タグ内のiosやその他のターゲットを含む)の問題でした。 - 他のターゲットにもこれを使用することについての答えに詳細を追加できますか? - 少なくともこれをフックする方法に関するリンク(つまり、十分な属性ですか、XAMLでスクロールバーを削除したいコントロールで使用する必要がありますか) – BrainSlugs83

+0

@ BrainSlugs83 IOSレンダラ用のコードを追加しました。 Xamlで行うことのないフックをフックアップするには、使用するコントロールのレンダラーをエクスポートしてください。上のサンプルのように。 –

+0

@ BrainSlugs83 https://github.com/veloxcore/Xamstrapここではsrcフォルダにサンプルがあります。 –

関連する問題