public virtual void ApplyActionsStyle() { NotificationActions?.RemoveAllViews(); if (OpenNotification.HasActions()) { var actions = OpenNotification.RetrieveActions(); for (int i = 0; i <= actions.Count - 1; i++) { var action = actions[i]; OpenAction openAction = new OpenAction(action); Button actionButton = new Button(Application.Context); float weight = 1f / actions.Count; actionButton.LayoutParameters = new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.MatchParent, weight); SetActionTextColor(actionButton); SetActionTag(actionButton, openAction); actionButton.Click += ActionButton_Click; SetActionButtonGravity(actionButton); SetActionButtonTextMaxLines(actionButton); SetActionButtonTextTypeface(actionButton); SetActionButtonBackground(actionButton); SetActionText(actionButton, openAction.Title()); SetActionTextLowercase(actionButton); SetActionIcon(actionButton, openAction); AddActionToActionsView(actionButton, i); } } }
public void ApplyActionsStyle(OpenNotification notification) { notificationActions?.RemoveAllViews(); if (notification.HasActions()) { var actions = notification.RetrieveActions(); foreach (Notification.Action action in actions) { OpenAction openAction = new OpenAction(action); Button actionButton = new Button(Application.Context); float weight = 1f / actions.Count; actionButton.LayoutParameters = new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.MatchParent, weight); actionButton.SetTextColor(Color.White); //Should change in MediaStyle (?) actionButton.SetTag(DefaultActionIdentificator, openAction); actionButton.Click += AnActionButton_Click; actionButton.Gravity = actionButtonsGravity; actionButton.SetMaxLines(actiontextMaxLines); TypedValue outValue = new TypedValue(); Application.Context.Theme.ResolveAttribute(Android.Resource.Attribute.SelectableItemBackground, outValue, true); actionButton.SetBackgroundResource(outValue.ResourceId); actionButton.SetTypeface(Typeface.Create(actionTextsTypeface, TypefaceStyle.Normal), TypefaceStyle.Normal); //notificationActions.SetGravity(actionButtonsContainerGravity); if (notification.Style() != MediaStyle) { actionButton.Text = openAction.Title(); } if (actionTextsAreinCapitalLetters == false) { actionButton.TransformationMethod = null; //Disables all caps text. } Handler looper = new Handler(Looper.MainLooper); looper.Post(() => { if (shouldShowIcons || notification.Style() == MediaStyle) //The MediaStyle allows icons to be shown. { actionButton.SetCompoundDrawablesRelativeWithIntrinsicBounds(openAction.GetActionIcon(), null, null, null); } notificationActions.AddView(actionButton); }); } } }
private void NotificationAdapterViewHolder_ItemClicked(object sender, NotificationItemClickedEventArgs e) { openNotification = new OpenNotification(e.StatusBarNotification); if (configurationManager.RetrieveAValue(ConfigurationParameters.TestEnabled)) { Toast.MakeText(floatingNotificationView.Context, "Progress Indeterminate?: " + openNotification.IsProgressIndeterminate().ToString() + "\n" + "Current Progress: " + openNotification.GetProgress().ToString() + "\n" + "Max Progress: " + openNotification.GetProgressMax().ToString() + "\n" + openNotification.GetGroupInfo() , ToastLength.Short).Show(); } //Only do this process if the notification that I want to show is different than the one that //the Floating Notification Widget has. //If it's the same then simply show it. if ((string)floatingNotificationView.GetTag(Resource.String.defaulttag) != openNotification.GetCustomId()) { floatingNotificationAppName.Text = openNotification.AppName(); floatingNotificationWhen.Text = openNotification.When(); floatingNotificationTitle.Text = openNotification.Title(); floatingNotificationText.Text = openNotification.Text(); floatingNotificationActionsContainer.RemoveAllViews(); if (openNotification.HasActions() == true) { var actions = openNotification.RetrieveActions(); foreach (var a in actions) { OpenAction openAction = new OpenAction(a); float weight = (float)1 / actions.Count; Button anActionButton = new Button(Application.Context) { LayoutParameters = new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.MatchParent, weight), Text = openAction.Title(), }; anActionButton.SetTypeface(Typeface.Create("sans-serif-condensed", TypefaceStyle.Normal), TypefaceStyle.Normal); anActionButton.SetMaxLines(1); anActionButton.SetTextColor(Color.Black); anActionButton.Click += (o, eventargs) => { openAction.ClickAction(); }; anActionButton.Gravity = GravityFlags.CenterVertical; TypedValue outValue = new TypedValue(); Application.Context.Theme.ResolveAttribute(Android.Resource.Attribute.SelectableItemBackgroundBorderless, outValue, true); anActionButton.SetBackgroundResource(outValue.ResourceId); //anActionButton.SetCompoundDrawablesRelativeWithIntrinsicBounds(openAction.GetActionIcon(), null, null, null); floatingNotificationActionsContainer.AddView(anActionButton); } ; } } else { floatingNotificationAppName.Text = openNotification.AppName(); floatingNotificationWhen.Text = openNotification.When(); floatingNotificationTitle.Text = openNotification.Title(); floatingNotificationText.Text = openNotification.Text(); floatingNotificationActionsContainer.RemoveAllViews(); if (openNotification.HasActions() == true) { var actions = openNotification.RetrieveActions(); foreach (var a in actions) { OpenAction openAction = new OpenAction(a); float weight = (float)1 / actions.Count; Button anActionButton = new Button(Application.Context) { LayoutParameters = new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.MatchParent, weight), Text = openAction.Title(), }; anActionButton.SetTypeface(Typeface.Create("sans-serif-condensed", TypefaceStyle.Normal), TypefaceStyle.Normal); anActionButton.SetMaxLines(1); anActionButton.SetTextColor(Color.Black); anActionButton.Click += (o, eventargs) => { openAction.ClickAction(); }; anActionButton.Gravity = GravityFlags.CenterVertical; TypedValue outValue = new TypedValue(); Application.Context.Theme.ResolveAttribute(Android.Resource.Attribute.SelectableItemBackgroundBorderless, outValue, true); anActionButton.SetBackgroundResource(outValue.ResourceId); //anActionButton.SetCompoundDrawablesRelativeWithIntrinsicBounds(openAction.GetActionIcon(), null, null, null); floatingNotificationActionsContainer.AddView(anActionButton); } ; } } if (floatingNotificationView.Visibility != ViewStates.Visible) { floatingNotificationView.Visibility = ViewStates.Visible; } else if (floatingNotificationView.Visibility != ViewStates.Visible) { floatingNotificationView.Visibility = ViewStates.Invisible; } }
private void CatcherHelper_NotificationPosted(object sender, NotificationPostedEventArgs e) { openNotification = new OpenNotification(e.StatusBarNotification); //if the current floating notification widget does not have a tag, let's set it. if (floatingNotificationView.GetTag(Resource.String.defaulttag) == null) { floatingNotificationView.SetTag(Resource.String.defaulttag, openNotification.GetCustomId()); } if (configurationManager.RetrieveAValue(ConfigurationParameters.TestEnabled)) { Toast.MakeText(floatingNotificationView.Context, "Progress Indeterminate?: " + openNotification.IsProgressIndeterminate().ToString() + "\n" + "Current Progress: " + openNotification.GetProgress().ToString() + "\n" + "Max Progress: " + openNotification.GetProgressMax().ToString() + "\n" + openNotification.GetGroupInfo() , ToastLength.Short).Show(); } if (e.UpdatesPreviousNotification) { if ((string)floatingNotificationView.GetTag(Resource.String.defaulttag) == openNotification.GetCustomId()) { floatingNotificationAppName.Text = openNotification.AppName(); floatingNotificationWhen.Text = openNotification.When(); floatingNotificationTitle.Text = openNotification.Title(); floatingNotificationText.Text = openNotification.Text(); floatingNotificationActionsContainer.RemoveAllViews(); if (openNotification.HasActions() == true) { var actions = openNotification.RetrieveActions(); foreach (var a in actions) { OpenAction openAction = new OpenAction(a); float weight = (float)1 / actions.Count; Button anActionButton = new Button(Application.Context) { LayoutParameters = new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.MatchParent, weight), Text = openAction.Title(), }; anActionButton.SetTypeface(Typeface.Create("sans-serif-condensed", TypefaceStyle.Normal), TypefaceStyle.Normal); anActionButton.SetMaxLines(1); anActionButton.SetTextColor(Color.Black); anActionButton.Click += (o, eventargs) => { openAction.ClickAction(); }; anActionButton.Gravity = GravityFlags.CenterVertical; TypedValue outValue = new TypedValue(); Application.Context.Theme.ResolveAttribute(Android.Resource.Attribute.SelectableItemBackgroundBorderless, outValue, true); anActionButton.SetBackgroundResource(outValue.ResourceId); //anActionButton.SetCompoundDrawablesRelativeWithIntrinsicBounds(openAction.GetActionIcon(), null, null, null); floatingNotificationActionsContainer.AddView(anActionButton); } ; } } } else { //Is a new notification, so set a new tag. floatingNotificationView.SetTag(Resource.String.defaulttag, openNotification.GetCustomId()); floatingNotificationAppName.Text = openNotification.AppName(); floatingNotificationWhen.Text = openNotification.When(); floatingNotificationTitle.Text = openNotification.Title(); floatingNotificationText.Text = openNotification.Text(); floatingNotificationActionsContainer.RemoveAllViews(); if (openNotification.HasActions() == true) { var actions = openNotification.RetrieveActions(); foreach (var a in actions) { OpenAction openAction = new OpenAction(a); float weight = (float)1 / actions.Count; Button anActionButton = new Button(Application.Context) { LayoutParameters = new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.MatchParent, weight), Text = openAction.Title(), }; anActionButton.SetTypeface(Typeface.Create("sans-serif-condensed", TypefaceStyle.Normal), TypefaceStyle.Normal); anActionButton.SetMaxLines(1); anActionButton.SetTextColor(Color.Black); anActionButton.Click += (o, eventargs) => { openAction.ClickAction(); }; anActionButton.Gravity = GravityFlags.CenterVertical; TypedValue outValue = new TypedValue(); Application.Context.Theme.ResolveAttribute(Android.Resource.Attribute.SelectableItemBackgroundBorderless, outValue, true); anActionButton.SetBackgroundResource(outValue.ResourceId); //anActionButton.SetCompoundDrawablesRelativeWithIntrinsicBounds(openAction.GetActionIcon(), null, null, null); floatingNotificationActionsContainer.AddView(anActionButton); } ; } if (floatingNotificationView.Visibility != ViewStates.Visible) { if (currentActivityState == ActivityStates.Resumed) { floatingNotificationView.Visibility = ViewStates.Visible; } } } }