2014-06-24 22 views
8

Tôi đang sử dụng Xamarin.Forms và đã tạo ra một scrollview, trong đó có một StackLayout ngang. Tôi muốn để có thể di chuyển theo chiều ngang, vì vậy tôi thiết lập:Scroll ngang trong Xamarin.Forms scrollview

Orientation = ScrollOrientation.Horizontal; 

Nhưng tôi không nhận được cuộn ngang. Nội dung của StackLayout rộng hơn màn hình và tôi thấy nội dung đang được cắt bớt ở cạnh.

Làm thế nào để đạt được cuộn ngang với Xamarin.Forms?

+0

Bạn có thể đăng mã để tạo ScrollView và đặt Nội dung của nó bằng StackLayout không? – Pedro

Trả lời

12

Đây là cách tôi đã nhận nó làm việc

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

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

Thật vậy, chúng ta phải có Orientation = ScrollOrientation.Horizontal trên StackLayout. Cảm ơn. – Barton

+0

Tôi có cùng một vấn đề nhưng tôi đang thêm trẻ em stacklayout theo chương trình. và câu trả lời dưới đây không hiệu quả với tôi! – AlirezaXX

0

Nếu bạn đang sử dụng các mẫu trong Visual Studio 2013 cho các ứng dụng Xamarin, phiên bản của Xamarin.Forms là một chút lỗi thời và không hỗ trợ di chuyển. Để khắc phục điều này, chỉ cần cập nhật gói 'nuget' và mã này

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, 
     }; 
    } 
} 

mã này sẽ hoạt động tốt trên Android.

Đối với iOS, mã sẽ làm việc như mong đợi.

Thật không may, vào ngày, cho WP8 có một lỗi và hack là thêm một renderer tùy chỉnh.

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; 
      } 
     } 
    } 
} 
Các vấn đề liên quan