コード例 #1
0
 /// <summary>
 /// 一つ前の階層に戻ることを試みます。
 /// </summary>
 /// <returns>戻る処理が成功したかどうかを表す値</returns>
 public bool Back()
 {
     if (currentParent.Parent is null)
     {
         return(false);
     }
     else
     {
         currentParent = currentParent.Parent;
         BuildLayout(currentParent);
         return(true);
     }
 }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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;
            }
        }
コード例 #5
0
 /// <summary>
 /// 子要素を挿入します。子要素には親要素が設定されます。
 /// </summary>
 /// <param name="hierarchyButton"></param>
 public void InsertChild(int index, HierarchyButton hierarchyButton)
 {
     hierarchyButton.Parent = this;
     children.Insert(index, hierarchyButton);
 }
コード例 #6
0
 /// <summary>
 /// 子要素を追加します。子要素には親要素が設定されます。
 /// </summary>
 /// <param name="hierarchyButton"></param>
 public void AddChild(HierarchyButton hierarchyButton)
 {
     hierarchyButton.Parent = this;
     children.Add(hierarchyButton);
 }
コード例 #7
0
 /// <summary>
 /// <see cref="HierarchyTextButton"/>クラスの新しいインスタンスを初期化します。
 /// </summary>
 public BackHierarchyButton(HierarchyButton parent)
 {
     needReflesh = true;
     Parent      = parent;
 }