2014-06-24 23 views
8

Sto usando Xamarin.Forms e hanno creato uno ScrollView, che contiene uno stackLayout orizzontale. Voglio essere in grado di scorrere orizzontalmente, quindi ho impostato:scorrimento orizzontale in Xamarin.Forms ScrollView

Orientation = ScrollOrientation.Horizontal; 

Ma non ottengo lo scroll orizzontale. Il contenuto dello StackLayout è più ampio dello schermo e vedo che il contenuto viene ritagliato sul bordo.

Come posso ottenere di scorrimento orizzontale con Xamarin.Forms?

+0

Puoi pubblicare il tuo codice per creare la ScrollView e impostarne il contenuto con StackLayout? – Pedro

risposta

12

È così che ho preso a lavorare

 var scrollView = ScrollView 
     { 
      HorizontalOptions = LayoutOptions.Fill, 
      Orientation = ScrollOrientation.Horizontal, 

      Content = new StackLayout{ 
       Orientation = StackOrientation.Horizontal, 
       Children = {} 
      } 
     }; 
+2

In effetti, dobbiamo avere Orientamento = ScrollOrientation.Horizontal su StackLayout. Grazie. – Barton

+0

Ho lo stesso problema ma sto aggiungendo i bambini stacklayout a livello di codice. e sotto la risposta non funziona per me! – AlirezaXX

0

Se stai usando i template in Visual Studio 2013 per applicazioni Xamarin, la versione di Xamarin.Forms è un po 'datato e non supporta lo scorrimento. Per risolvere questo problema, basta nuget 'update-package' e questo codice

public class MainPage : ContentPage 
{ 
    public MainPage() 
    { 
     Label label = new Label { 
      Text = "This is a very long label which I expect to scroll horizontally because it's in a ScrollView.", 
      Font = Font.SystemFontOfSize(24), 
     }; 

     this.Content = new ScrollView { 
      Content = label, 
      Orientation = ScrollOrientation.Horizontal, 
     }; 
    } 
} 

codice funzionerà bene su Android.

Per iOS, il codice funzionerà come previsto.

Purtroppo, alla data, per WP8 c'è un bug e l'hack è quello di aggiungere un renderer personalizzato.

using System.Windows.Controls; 
using App2.WinPhone; 
using Xamarin.Forms; 
using Xamarin.Forms.Platform.WinPhone; 

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

namespace App2.WinPhone 
{ 
    public sealed class FixedSVRenderer : ScrollViewRenderer 
    { 
     protected override void OnModelSet() 
     { 
      base.OnModelSet(); 

      if (Model.Orientation == ScrollOrientation.Horizontal) 
      { 
       // Enable horiz-scrolling 
       Control.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto; 
      } 
     } 
    } 
} 
Problemi correlati