diff options
author | Samantha Houts <samhouts@users.noreply.github.com> | 2017-10-09 18:05:08 -0700 |
---|---|---|
committer | Jason Smith <jason.smith@xamarin.com> | 2017-10-09 18:05:08 -0700 |
commit | 3035b128027e6316ce0193574389832b880091d8 (patch) | |
tree | bd5f110a2be6afe388ca3c75899fa1c41e93be59 /Xamarin.Forms.Platform.Android/AppCompat | |
parent | 68801433df0779e59f2f0c64ca0374593e94415b (diff) | |
download | xamarin-forms-3035b128027e6316ce0193574389832b880091d8.tar.gz xamarin-forms-3035b128027e6316ce0193574389832b880091d8.tar.bz2 xamarin-forms-3035b128027e6316ce0193574389832b880091d8.zip |
Revert "Fix border on android buttons (#941)" (#1192)
This reverts commit 20d33c6ce21619b565a90af2ec4ca921581ff2b9.
Diffstat (limited to 'Xamarin.Forms.Platform.Android/AppCompat')
-rw-r--r-- | Xamarin.Forms.Platform.Android/AppCompat/ButtonRenderer.cs | 60 |
1 files changed, 42 insertions, 18 deletions
diff --git a/Xamarin.Forms.Platform.Android/AppCompat/ButtonRenderer.cs b/Xamarin.Forms.Platform.Android/AppCompat/ButtonRenderer.cs index 9f336a24..394f3325 100644 --- a/Xamarin.Forms.Platform.Android/AppCompat/ButtonRenderer.cs +++ b/Xamarin.Forms.Platform.Android/AppCompat/ButtonRenderer.cs @@ -1,9 +1,14 @@ using System; using System.ComponentModel; using Android.Content; +using Android.Content.Res; using Android.Graphics; +using Android.Graphics.Drawables; +using Android.Support.V4.Content; using Android.Support.V7.Widget; using Android.Util; +using Xamarin.Forms.Internals; +using GlobalResource = Android.Resource; using Object = Java.Lang.Object; using AView = Android.Views.View; using AMotionEvent = Android.Views.MotionEvent; @@ -14,7 +19,6 @@ namespace Xamarin.Forms.Platform.Android.AppCompat { public class ButtonRenderer : ViewRenderer<Button, AppCompatButton>, AView.IOnAttachStateChangeListener { - ButtonBackgroundTracker _backgroundTracker; TextColorSwitcher _textColorSwitcher; float _defaultFontSize; Typeface _defaultTypeface; @@ -79,7 +83,6 @@ namespace Xamarin.Forms.Platform.Android.AppCompat Control.Tag = null; _textColorSwitcher = null; } - _backgroundTracker?.Dispose(); } base.Dispose(disposing); @@ -108,12 +111,8 @@ namespace Xamarin.Forms.Platform.Android.AppCompat button.AddOnAttachStateChangeListener(this); } - if (_backgroundTracker == null) - _backgroundTracker = new ButtonBackgroundTracker(Element, Control); - else - _backgroundTracker.Button = e.NewElement; - UpdateAll(); + UpdateBackgroundColor(); } } @@ -140,7 +139,42 @@ namespace Xamarin.Forms.Platform.Android.AppCompat if (Element == null || Control == null) return; - _backgroundTracker?.UpdateBackgroundColor(); + Color backgroundColor = Element.BackgroundColor; + if (backgroundColor.IsDefault) + { + if (Control.SupportBackgroundTintList != null) + { + Context context = Context; + int id = GlobalResource.Attribute.ButtonTint; + unchecked + { + using (var value = new TypedValue()) + { + try + { + Resources.Theme theme = context.Theme; + if (theme != null && theme.ResolveAttribute(id, value, true)) +#pragma warning disable 618 + Control.SupportBackgroundTintList = Resources.GetColorStateList(value.Data); +#pragma warning restore 618 + else + Control.SupportBackgroundTintList = new ColorStateList(ColorExtensions.States, new[] { (int)0xffd7d6d6, 0x7fd7d6d6 }); + } + catch (Exception ex) + { + Internals.Log.Warning("Xamarin.Forms.Platform.Android.ButtonRenderer", "Could not retrieve button background resource: {0}", ex); + Control.SupportBackgroundTintList = new ColorStateList(ColorExtensions.States, new[] { (int)0xffd7d6d6, 0x7fd7d6d6 }); + } + } + } + } + } + else + { + int intColor = backgroundColor.ToAndroid().ToArgb(); + int disableColor = backgroundColor.MultiplyAlpha(0.5).ToAndroid().ToArgb(); + Control.SupportBackgroundTintList = new ColorStateList(ColorExtensions.States, new[] { intColor, disableColor }); + } } void UpdateAll() @@ -150,16 +184,6 @@ namespace Xamarin.Forms.Platform.Android.AppCompat UpdateBitmap(); UpdateTextColor(); UpdateEnabled(); - UpdateBackgroundColor(); - UpdateDrawable(); - } - - void UpdateDrawable() - { - if (Element == null || Control == null) - return; - - _backgroundTracker?.UpdateDrawable(); } void UpdateBitmap() |