summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.Android/AppCompat
diff options
context:
space:
mode:
authorSamantha Houts <samhouts@users.noreply.github.com>2017-10-09 18:05:08 -0700
committerJason Smith <jason.smith@xamarin.com>2017-10-09 18:05:08 -0700
commit3035b128027e6316ce0193574389832b880091d8 (patch)
treebd5f110a2be6afe388ca3c75899fa1c41e93be59 /Xamarin.Forms.Platform.Android/AppCompat
parent68801433df0779e59f2f0c64ca0374593e94415b (diff)
downloadxamarin-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.cs60
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()