diff options
Diffstat (limited to 'Xamarin.Forms.Controls/GalleryPages/LayoutOptionsGallery.cs')
-rw-r--r-- | Xamarin.Forms.Controls/GalleryPages/LayoutOptionsGallery.cs | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/Xamarin.Forms.Controls/GalleryPages/LayoutOptionsGallery.cs b/Xamarin.Forms.Controls/GalleryPages/LayoutOptionsGallery.cs new file mode 100644 index 00000000..13c6c575 --- /dev/null +++ b/Xamarin.Forms.Controls/GalleryPages/LayoutOptionsGallery.cs @@ -0,0 +1,108 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Xamarin.Forms.Controls +{ + public class LayoutOptionsGallery : ContentPage + { + public LayoutOptionsGallery () + { + Build (); + } + + void Build () + { + var mainLayout = new StackLayout { + BackgroundColor = Color.Silver, + VerticalOptions = LayoutOptions.FillAndExpand, + Children = { + BuildLayoutRegion (), + BuildLayoutRegion () + } + }; + + var changeOrientationButton = new Button {Text = "Change Orientation"}; + changeOrientationButton.Clicked += (sender, args) => mainLayout.Orientation = (mainLayout.Orientation == StackOrientation.Horizontal) ? StackOrientation.Vertical : StackOrientation.Horizontal; + + Content = new StackLayout { + Children = { + changeOrientationButton, + mainLayout + } + }; + } + + LayoutOptions StringToLayoutOptions (string options) + { + switch (options) { + case "Start": + return LayoutOptions.Start; + case "StartAndExpand": + return LayoutOptions.StartAndExpand; + case "Center": + return LayoutOptions.Center; + case "CenterAndExpand": + return LayoutOptions.CenterAndExpand; + case "End": + return LayoutOptions.End; + case "EndAndExpand": + return LayoutOptions.EndAndExpand; + case "Fill": + return LayoutOptions.Fill; + case "FillAndExpand": + return LayoutOptions.FillAndExpand; + } + throw new InvalidDataException (); + } + + View BuildLayoutRegion () + { + // Set these to fill and expand so they just fill their parent which is the thing we actually want to play with. + var horizontalButton = new Button { + Text = "H Options", + HorizontalOptions = LayoutOptions.FillAndExpand, + VerticalOptions = LayoutOptions.FillAndExpand, + }; + + var verticalButton = new Button { + Text = "V Options", + HorizontalOptions = LayoutOptions.FillAndExpand, + VerticalOptions = LayoutOptions.FillAndExpand, + }; + + var result = new StackLayout { + BackgroundColor = Color.Gray, + Children = { + horizontalButton, + verticalButton + } + }; + + horizontalButton.Clicked += async (sender, args) => { + var selection = await DisplayActionSheet ("Select Horizontal Options", null, null, + "Start", "StartAndExpand", + "Center", "CenterAndExpand", + "End", "EndAndExpand", + "Fill", "FillAndExpand"); + + result.HorizontalOptions = StringToLayoutOptions (selection); + }; + + verticalButton.Clicked += async (sender, args) => { + var selection = await DisplayActionSheet ("Select Horizontal Options", null, null, + "Start", "StartAndExpand", + "Center", "CenterAndExpand", + "End", "EndAndExpand", + "Fill", "FillAndExpand"); + + result.VerticalOptions = StringToLayoutOptions (selection); + }; + + return result; + } + } +} |