summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.Android/Renderers/ToolbarImageButton.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Platform.Android/Renderers/ToolbarImageButton.cs')
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/ToolbarImageButton.cs41
1 files changed, 41 insertions, 0 deletions
diff --git a/Xamarin.Forms.Platform.Android/Renderers/ToolbarImageButton.cs b/Xamarin.Forms.Platform.Android/Renderers/ToolbarImageButton.cs
new file mode 100644
index 00000000..6d18db54
--- /dev/null
+++ b/Xamarin.Forms.Platform.Android/Renderers/ToolbarImageButton.cs
@@ -0,0 +1,41 @@
+using System;
+using System.ComponentModel;
+using Android.Content;
+using Android.Graphics;
+using Android.Widget;
+
+namespace Xamarin.Forms.Platform.Android
+{
+ internal sealed class ToolbarImageButton : ImageButton, IToolbarButton
+ {
+ public ToolbarImageButton(Context context, ToolbarItem item) : base(context)
+ {
+ if (item == null)
+ throw new ArgumentNullException("item", "you should specify a ToolbarItem");
+ Item = item;
+ Enabled = item.IsEnabled;
+ Bitmap bitmap;
+ bitmap = Context.Resources.GetBitmap(Item.Icon);
+ SetImageBitmap(bitmap);
+ SetBackgroundColor(new Color(0, 0, 0, 0).ToAndroid());
+ Click += (sender, e) => item.Activate();
+ bitmap.Dispose();
+ Item.PropertyChanged += HandlePropertyChanged;
+ }
+
+ public ToolbarItem Item { get; set; }
+
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing)
+ Item.PropertyChanged -= HandlePropertyChanged;
+ base.Dispose(disposing);
+ }
+
+ void HandlePropertyChanged(object sender, PropertyChangedEventArgs e)
+ {
+ if (e.PropertyName == MenuItem.IsEnabledProperty.PropertyName)
+ Enabled = Item.IsEnabled;
+ }
+ }
+} \ No newline at end of file