/// <summary> /// 一つ前の階層に戻ることを試みます。 /// </summary> /// <returns>戻る処理が成功したかどうかを表す値</returns> public bool Back() { if (currentParent.Parent is null) { return(false); } else { currentParent = currentParent.Parent; BuildLayout(currentParent); return(true); } }
private void ButtonRelativeLayout_Click(object sender, EventArgs e) { var clickedLayout = (RelativeLayout)sender; var clickedButton = buttonDictionary[clickedLayout.Id]; var args = new HierarchyButtonClickEventArgs(); clickedButton.OnClick(args); currentParent = args.NextCurrentHierarchyButton ?? currentParent; if (args.LayoutChanged) { BuildLayout(currentParent); } }
private ViewGroup CreateRelativeLayoutButton(HierarchyButton hierarchyButton) { var buttonRelativeLayout = hierarchyButton.GetView(context, out var isCache); if (!isCache) { buttonRelativeLayout.SetPadding(50, 0, 50, 0); buttonRelativeLayout.Clickable = true; var stateListDrawable = new StateListDrawable(); stateListDrawable.AddState(new int[] { -Android.Resource.Attribute.StatePressed }, new ColorDrawable(Android.Graphics.Color.Argb (BackGroundColor[0], BackGroundColor[1], BackGroundColor[2], BackGroundColor[3]))); stateListDrawable.AddState(new int[] { Android.Resource.Attribute.StatePressed }, new ColorDrawable(Android.Graphics.Color.Argb (PressedBackGroundColor[0], PressedBackGroundColor[1], PressedBackGroundColor[2], PressedBackGroundColor[3]))); buttonRelativeLayout.Background = stateListDrawable; buttonRelativeLayout.Click += ButtonRelativeLayout_Click; var id = View.GenerateViewId(); buttonRelativeLayout.Id = id; buttonDictionary.Add(id, hierarchyButton); } return(buttonRelativeLayout); }
private void BuildLayout(HierarchyButton parentHierarchyButton) { mainLinearLayout.RemoveAllViews(); var IsFirst = true; if (ShowBackButton && (currentParent.Parent != null)) { var backButton = new BackHierarchyButton(parentHierarchyButton); mainLinearLayout.AddView(CreateRelativeLayoutButton(backButton), buttonLayoutParams); IsFirst = false; } foreach (var button in parentHierarchyButton.Children) { if (!IsFirst) { mainLinearLayout.AddView(CreateUnderLine(), horizontalLineLayoutParams); } var layout = CreateRelativeLayoutButton(button); mainLinearLayout.AddView(layout, buttonLayoutParams); IsFirst = false; } }
/// <summary> /// 子要素を挿入します。子要素には親要素が設定されます。 /// </summary> /// <param name="hierarchyButton"></param> public void InsertChild(int index, HierarchyButton hierarchyButton) { hierarchyButton.Parent = this; children.Insert(index, hierarchyButton); }
/// <summary> /// 子要素を追加します。子要素には親要素が設定されます。 /// </summary> /// <param name="hierarchyButton"></param> public void AddChild(HierarchyButton hierarchyButton) { hierarchyButton.Parent = this; children.Add(hierarchyButton); }
/// <summary> /// <see cref="HierarchyTextButton"/>クラスの新しいインスタンスを初期化します。 /// </summary> public BackHierarchyButton(HierarchyButton parent) { needReflesh = true; Parent = parent; }