Centralize Theme Wrapper and fix sandbox to work with previewer (#5495)
authorShane Neuville <shane94@hotmail.com>
Wed, 20 Mar 2019 17:11:16 +0000 (11:11 -0600)
committerGitHub <noreply@github.com>
Wed, 20 Mar 2019 17:11:16 +0000 (11:11 -0600)
* Centralize Theme Wrapper and fix sandbox to work with previewer

* simplify

* Update Xamarin.Forms.Material.Android/MaterialContextThemeWrapper.cs

Co-Authored-By: PureWeen <shane94@hotmail.com>
* Update Xamarin.Forms.Material.Android/MaterialContextThemeWrapper.cs

Co-Authored-By: PureWeen <shane94@hotmail.com>
* Update Xamarin.Forms.Material.Android/MaterialContextThemeWrapper.cs

Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/VisualControlsPage.xaml
Xamarin.Forms.Material.Android/MaterialActivityIndicatorRenderer.cs
Xamarin.Forms.Material.Android/MaterialButtonRenderer.cs
Xamarin.Forms.Material.Android/MaterialContextThemeWrapper.cs
Xamarin.Forms.Material.Android/MaterialFrameRenderer.cs
Xamarin.Forms.Material.Android/MaterialProgressBarRenderer.cs
Xamarin.Forms.Material.Android/MaterialSliderRenderer.cs
Xamarin.Forms.Material.Android/Resources/values/styles.xml

index bf67a0e..ff69242 100644 (file)
@@ -69,6 +69,9 @@
             <Label Text="Custom" Margin="0,0,0,-10" />
             <ProgressBar Progress="0.5" ProgressColor="{StaticResource PrimaryColor}" BackgroundColor="{StaticResource SecondaryColor}" />
 
+            <Label Text="Height 20" Margin="0,0,0,-10" />
+            <ProgressBar Progress="0.5" HeightRequest="20" ProgressColor="{StaticResource PrimaryColor}" BackgroundColor="{StaticResource SecondaryColor}" />
+
 
             <Label Text="Buttons" FontSize="Large" />
 
index 9e2c9d3..368f396 100644 (file)
@@ -29,7 +29,7 @@ namespace Xamarin.Forms.Material.Android
                public MaterialActivityIndicatorRenderer(Context context)
                        : base(context)
                {
-                       _control = new CircularProgress(new ContextThemeWrapper(context, Resource.Style.XamarinFormsMaterialProgressBarCircular), null, Resource.Style.XamarinFormsMaterialProgressBarCircular)
+                       _control = new CircularProgress(MaterialContextThemeWrapper.Create(context), null, Resource.Attribute.materialProgressBarCircularStyle)
                        {
                                // limiting size to compare iOS realization
                                // https://github.com/material-components/material-components-ios/blob/develop/components/ActivityIndicator/src/MDCActivityIndicator.m#L425
index aa4aca1..ad8516c 100644 (file)
@@ -41,7 +41,7 @@ namespace Xamarin.Forms.Material.Android
                readonly AutomationPropertiesProvider _automationPropertiesProvider;
                
                public MaterialButtonRenderer(Context context)
-                       : base(new ContextThemeWrapper(context, Resource.Style.XamarinFormsMaterialTheme))
+                       : base(MaterialContextThemeWrapper.Create(context))
                {
                        _automationPropertiesProvider = new AutomationPropertiesProvider(this);
                        _buttonLayoutManager = new ButtonLayoutManager(this,
index 2763ee0..e52cd39 100644 (file)
@@ -2,23 +2,28 @@
 using Android.Content;
 using Android.Views;
 using Xamarin.Forms.Platform.Android;
+using AndroidAppCompat = Android.Support.V7.Content.Res.AppCompatResources;
 
 namespace Xamarin.Forms.Material.Android
 {
        public class MaterialContextThemeWrapper : ContextThemeWrapper
        {
-               public MaterialContextThemeWrapper(Context context) : base(context, Resource.Style.XamarinFormsMaterialTheme)
+               public MaterialContextThemeWrapper(Context context) : this(context, Resource.Style.XamarinFormsMaterialTheme)
                {
                }
 
+               MaterialContextThemeWrapper(Context context, int themeResId) : base(context, themeResId)
+               {
+
+               }
 
-               public static Context Create(Context context)
+               public static MaterialContextThemeWrapper Create(Context context)
                {
-                       if (context is MaterialContextThemeWrapper)
-                               return context;
+                       if (context is MaterialContextThemeWrapper materialContext)
+                               return materialContext;
 
                        return new MaterialContextThemeWrapper(context);
                }
        }
 }
-#endif
\ No newline at end of file
+#endif
index 58099be..f681f2b 100644 (file)
@@ -32,7 +32,7 @@ namespace Xamarin.Forms.Material.Android
                readonly MotionEventHelper _motionEventHelper;
 
                public MaterialFrameRenderer(Context context)
-                       : base(new ContextThemeWrapper(context, Resource.Style.XamarinFormsMaterialTheme))
+                       : base(MaterialContextThemeWrapper.Create(context))
                {
                        _gestureManager = new GestureManager(this);
                        _effectControlProvider = new EffectControlProvider(this);
index fdb3c8e..f563dab 100644 (file)
@@ -26,7 +26,7 @@ namespace Xamarin.Forms.Material.Android
                MotionEventHelper _motionEventHelper;
                
                public MaterialProgressBarRenderer(Context context)
-                       : base(new ContextThemeWrapper(context, Resource.Style.XamarinFormsMaterialProgressBarHorizontal), null, Resource.Style.XamarinFormsMaterialProgressBarHorizontal)
+                       : base(MaterialContextThemeWrapper.Create(context), null, Resource.Attribute.materialProgressBarHorizontalStyle)
                {
                        Indeterminate = false;
                        Max = MaximumValue;
index e0cc2ba..eef78d4 100644 (file)
@@ -29,7 +29,7 @@ namespace Xamarin.Forms.Material.Android
                double _min = 0.0;
 
                public MaterialSliderRenderer(Context context)
-                       : base(new ContextThemeWrapper(context, Resource.Style.XamarinFormsMaterialSlider), null, Resource.Style.XamarinFormsMaterialSlider)
+                       : base(MaterialContextThemeWrapper.Create(context), null, Resource.Attribute.materialSliderStyle)
                {
                        SetOnSeekBarChangeListener(this);
                        Max = (int)MaximumValue;
index 338242f..6c7c5c3 100644 (file)
@@ -2,11 +2,17 @@
 <resources>
 
   <attr name="materialOutlinedButtonStyle" format="reference"/>
+  <attr name="materialSliderStyle" format="reference"/>
+  <attr name="materialProgressBarHorizontalStyle" format="reference"/>
+  <attr name="materialProgressBarCircularStyle" format="reference"/>
 
   <!-- Material Base Theme -->
   <style name="XamarinFormsMaterialTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
     <item name="materialButtonStyle">@style/XamarinFormsMaterialButton</item>
     <item name="materialOutlinedButtonStyle">@style/XamarinFormsMaterialButtonOutlined</item>
+    <item name="materialSliderStyle">@style/XamarinFormsMaterialSlider</item>
+    <item name="materialProgressBarHorizontalStyle">@style/XamarinFormsMaterialProgressBarHorizontal</item>
+    <item name="materialProgressBarCircularStyle">@style/XamarinFormsMaterialProgressBarCircular</item>
   </style>
 
   <!-- Material Sliders -->