private static void ActionBarSelectedItemChanged(ActionBar actionBar, AttachedMemberChangedEventArgs <object> args) { switch (actionBar.GetNavigationMode()) { case ActionBarNavigationMode.List: #if APPCOMPAT var adapter = actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSourceAdapter); #else var adapter = actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSourceAdapter); #endif if (adapter == null || adapter.ItemsSource == null) { return; } if (args.NewValue == null) { args.Member.SetSingleValue(actionBar, adapter.GetRawItem(actionBar.SelectedNavigationIndex)); } else { actionBar.SetSelectedNavigationItem(adapter.GetPosition(args.NewValue)); } break; case ActionBarNavigationMode.Tabs: #if APPCOMPAT var tabGenerator = actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSourceGenerator) as IItemsSourceGeneratorEx; #else var tabGenerator = actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSourceGenerator) as IItemsSourceGeneratorEx; #endif if (tabGenerator == null) { var tabValue = args.NewValue as ActionBar.Tab; if (tabValue != null && tabValue.Position != actionBar.SelectedNavigationIndex) { tabValue.Select(); } } else { if (args.NewValue == null) { object ctx = actionBar.SelectedNavigationIndex < 0 ? null : actionBar.SelectedTab; if (ctx != null) { ctx = ctx.DataContext(); } args.Member.SetSingleValue(actionBar, ctx); } else { tabGenerator.SelectedItem = args.NewValue; } } break; } }
private static void ActionBarUpdateItemsSource(ActionBar actionBar) { switch (actionBar.GetNavigationMode()) { case ActionBarNavigationMode.List: #if APPCOMPAT IItemsSourceAdapter sourceAdapter = actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSourceAdapter); #else IItemsSourceAdapter sourceAdapter = actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSourceAdapter); #endif if (sourceAdapter == null) { sourceAdapter = AndroidToolkitExtensions.ItemsSourceAdapterFactory(actionBar, actionBar.ThemedContext, DataContext.Empty); #if APPCOMPAT actionBar.SetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSourceAdapter, sourceAdapter); #else actionBar.SetBindingMemberValue(AttachedMembers.ActionBar.ItemsSourceAdapter, sourceAdapter); #endif actionBar.SetListNavigationCallbacks(sourceAdapter, new ActionBarNavigationListener(actionBar)); } #if APPCOMPAT sourceAdapter.ItemsSource = actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSource); #else sourceAdapter.ItemsSource = actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSource); #endif break; case ActionBarNavigationMode.Standard: #if APPCOMPAT actionBar.SetBindingMemberValue(AttachedMembersCompat.ActionBar.SelectedItem, BindingExtensions.NullValue); #else actionBar.SetBindingMemberValue(AttachedMembers.ActionBar.SelectedItem, BindingExtensions.NullValue); #endif actionBar.SetListNavigationCallbacks(null, null); #if APPCOMPAT actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSourceGenerator)?.SetItemsSource(null); var adapter = actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSourceAdapter); #else actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSourceGenerator)?.SetItemsSource(null); var adapter = actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSourceAdapter); #endif if (adapter != null) { adapter.ItemsSource = null; } break; case ActionBarNavigationMode.Tabs: #if APPCOMPAT actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSourceGenerator)?.SetItemsSource(actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSource)); #else actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSourceGenerator)?.SetItemsSource(actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSource)); #endif break; } }
private void OnBackPressing(Activity sender, CancelEventArgs args) { var value = _actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ContextActionBarVisible); if (value) { args.Cancel = true; } _actionBar.SetBindingMemberValue(AttachedMembersCompat.ActionBar.ContextActionBarVisible, false); }
protected override void Refresh() { var manager = GetCollectionViewManager(); for (int i = 0; i < _actionBar.TabCount; i++) { ActionBarTabTemplate.ClearTab(_actionBar, _actionBar.GetTabAt(i), true); } if (manager == null) { _actionBar.RemoveAllTabs(); } else { manager.Clear(_actionBar); } IEnumerable itemsSource = ItemsSource; if (itemsSource == null) { return; } #if APPCOMPAT var selectedItem = _actionBar.GetBindingMemberValue(AttachedMembersCompat.ActionBar.SelectedItem); #else var selectedItem = _actionBar.GetBindingMemberValue(AttachedMembers.ActionBar.SelectedItem); #endif int count = itemsSource.Count(); for (int index = 0; index < count; index++) { var item = GetItem(index); var tab = CreateTab(item); if (manager == null) { _actionBar.AddTab(tab, index, ReferenceEquals(selectedItem, item)); } else { manager.Insert(_actionBar, index, tab); } } if (count == 0) { OnEmptyTab(); } }
public bool OnNavigationItemSelected(int itemPosition, long itemId) { #if APPCOMPAT var adapter = _actionBar?.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ItemsSourceAdapter); #else var adapter = _actionBar?.GetBindingMemberValue(AttachedMembers.ActionBar.ItemsSourceAdapter); #endif if (adapter == null) { return(false); } #if APPCOMPAT _actionBar.SetBindingMemberValue(AttachedMembersCompat.ActionBar.SelectedItem, adapter.GetRawItem(itemPosition)); #else _actionBar.SetBindingMemberValue(AttachedMembers.ActionBar.SelectedItem, adapter.GetRawItem(itemPosition)); #endif return(true); }
public bool OnCreateActionMode(ActionMode mode, IMenu menu) { #if APPCOMPAT var templateId = _actionBar?.GetBindingMemberValue(AttachedMembersCompat.ActionBar.ContextActionBarTemplate); #else var templateId = _actionBar?.GetBindingMemberValue(AttachedMembers.ActionBar.ContextActionBarTemplate); #endif if (templateId == null) { return(false); } var activity = _actionBar.ThemedContext.GetActivity(); if (activity == null) { Tracer.Warn("The activity is null action bar {0}", _actionBar); return(false); } activity.MenuInflater.Inflate(templateId.Value, menu, _actionBar); return(true); }
private void SetContent(ActionBar.Tab tab, FragmentTransaction ft, int? placeHolder, Activity activity, ActionBar bar) { if (placeHolder == null) { Tracer.Error("The placeholder for tab {0} was not found.", tab); return; } var layout = activity.FindViewById<ViewGroup>(placeHolder.Value); if (layout == null) { Tracer.Warn("The ActionBarTabContentId with id = {0} is not found in activity {1}", placeHolder.Value, activity); return; } if (_content == null) { #if APPCOMPAT _content = tab.GetBindingMemberValue(AttachedMembersCompat.ActionBarTab.Content); #else _content = tab.GetBindingMemberValue(AttachedMembers.ActionBarTab.Content); #endif var viewModel = _content as IViewModel; if (viewModel == null) { var fragmentClass = _content as string; //If content is a string, trying to create a fragment. if (!string.IsNullOrEmpty(fragmentClass)) { var type = TypeCache<Fragment>.Instance.GetTypeByName(fragmentClass, true, false); if (type != null) { var fragment = Fragment.Instantiate(bar.ThemedContext, Java.Lang.Class.FromType(type).Name); _content = fragment; } } else if (_content is int) _content = activity.GetBindableLayoutInflater().Inflate((int)_content, null); } else viewModel.Settings.Metadata.AddOrUpdate(ViewModelConstants.StateNotNeeded, true); _content = PlatformExtensions.GetContentView(layout, layout.Context, _content, _contentTemplateProvider.GetTemplateId(), _contentTemplateProvider.GetDataTemplateSelector()); layout.SetContentView(_content, ft, (@group, fragment, arg3) => { if (fragment.IsDetached) arg3.Attach(fragment); else arg3.Replace(@group.Id, fragment); }); } else layout.SetContentView(_content, ft, (@group, fragment, arg3) => arg3.Attach(fragment)); }
public void OnTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { if (_cleared) return; var bar = (ActionBar)tab.GetBindingMemberValue(AttachedMembers.Object.Parent); var placeHolder = ActionBarView.GetTabContentId(bar); var activity = bar.ThemedContext.GetActivity(); SetContent(tab, ft, placeHolder, activity, bar); //Set selected item data context or tab var selectedItem = bar.GetBindingMemberValue(ItemsSourceGeneratorBase.MemberDescriptor) == null ? tab : tab.GetDataContext(); #if APPCOMPAT bar.SetBindingMemberValue(AttachedMembersCompat.ActionBar.SelectedItem, selectedItem); #else bar.SetBindingMemberValue(AttachedMembers.ActionBar.SelectedItem, selectedItem); #endif }