public void Show(Stage stage) { ClearActions(); //RemoveCaptureListener(_ignoreTouchDown); PreviewTouchDown -= CancelTouchDownHandler; _prevKeyboardFocus = null; Actor actor = stage.GetKeyboardFocus(); if (actor != null && !actor.IsDescendentOf(this)) { _prevKeyboardFocus = actor; } _prevScrollFocus = null; actor = stage.GetScrollFocus(); if (actor != null && !actor.IsDescendentOf(this)) { _prevScrollFocus = actor; } Pack(); SetPosition((float)Math.Round((stage.Width - Width) / 2), (float)Math.Round((stage.Height - Height) / 2)); stage.AddActor(this); stage.SetKeyboardFocus(this); stage.SetScrollFocus(this); if (FadeDuration > 0) { Color = Color.MultiplyAlpha(0); AddAction(ActionRepo.FadeIn(FadeDuration, Interpolation.Fade)); } }
public void Show(Stage stage) { stage.AddActor(this); Vector2 stageCoords = _selectBox.LocalToStageCoordinates(Vector2.Zero); _screenCoords = stageCoords; _list.SetItems(_selectBox.Items); _list.SelectedIndex = _selectBox.SelectionIndex; // Show the list above or below the select box, limited to a number of items and the available height in the stage. float itemHeight = _list.ItemHeight; float height = itemHeight * (_selectBox.MaxListCount <= 0 ? _selectBox.Items.Length : Math.Min(_selectBox.MaxListCount, _selectBox.Items.Length)); ISceneDrawable background = Style.Background; if (background != null) { height += background.TopHeight + background.BottomHeight; } float heightBelow = stageCoords.Y; float heightAbove = stage.Camera.ViewportHeight - stageCoords.Y - _selectBox.Height; bool below = true; if (height > heightBelow) { if (heightAbove > heightBelow) { below = false; height = Math.Min(height, heightAbove); } else { height = heightBelow; } } if (below) { Y = stageCoords.Y - height; } else { Y = stageCoords.Y + _selectBox.Height; } X = stageCoords.X + _selectBox.Style.ListLeftOffset; Width = _selectBox.Width + _selectBox.Style.ListLeftOffset + _selectBox.Style.ListRightOffset; Height = height; ScrollToCenter(0, _list.Height - _selectBox.SelectionIndex * itemHeight - itemHeight / 2, 0, 0); UpdateVisualScroll(); ClearActions(); Color = new Color(Color.R, Color.G, Color.B, 0); AddAction(ActionRepo.FadeIn(.3f, Interpolation.Fade)); stage.SetScrollFocus(this); }