summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Controls/GalleryPages/LayoutOptionsGallery.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Controls/GalleryPages/LayoutOptionsGallery.cs')
-rw-r--r--Xamarin.Forms.Controls/GalleryPages/LayoutOptionsGallery.cs108
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;
+ }
+ }
+}