diff options
Diffstat (limited to 'Xamarin.Forms.Platform.Android/Renderers/ToolbarImageButton.cs')
-rw-r--r-- | Xamarin.Forms.Platform.Android/Renderers/ToolbarImageButton.cs | 41 |
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 |