private void AddVisualItem(FrameworkElement visual, DayScheduleItemsArranger.BaseScheduleItem item) { FrameworkElement root; if (item.NumOfColumns > 1) { Grid grid = new Grid() { Margin = new Windows.UI.Xaml.Thickness(0, 0, -6, 0) }; for (int i = 0; i < item.NumOfColumns; i++) { grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) }); } visual.Margin = new Thickness(0, 0, 6, 0); Grid.SetColumn(visual, item.Column); grid.Children.Add(visual); root = grid; } else { root = visual; } root.Margin = new Thickness(item.LeftOffset, item.TopOffset, 0, 0); Grid.SetColumn(root, 2); Grid.SetRowSpan(root, int.MaxValue); _schedulesGrid.Children.Add(root); }
private void AddVisualItem(UIView visual, DayScheduleItemsArranger.BaseScheduleItem item, DayOfWeek day) { var col = _scheduleColumns[GetColumn(day)]; AddVisualItem(visual, item, col, COL_PADDING); PinTopRelativeToStart(visual, item.TopOffset + INITIAL_MARGIN); }
private void AddVisualItem(View visual, DayScheduleItemsArranger.BaseScheduleItem item) { View root; if (item.NumOfColumns > 1) { var grid = new LinearLayout(Context) { LayoutParameters = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MatchParent, LinearLayout.LayoutParams.WrapContent), Orientation = Orientation.Horizontal }; for (int i = 0; i < item.NumOfColumns; i++) { View colView; if (i == item.Column) { colView = visual; } else { colView = new View(Context); } colView.LayoutParameters = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MatchParent) { Weight = 1 }; grid.AddView(colView); } root = grid; } else { root = visual; } root.LayoutParameters = new RelativeLayout.LayoutParams(LayoutParams.MatchParent, LayoutParams.WrapContent) { LeftMargin = ThemeHelper.AsPx(Context, item.LeftOffset) + TimeIndicatorSize + GapSize, TopMargin = ThemeHelper.AsPx(Context, item.TopOffset) }; if (item is DayScheduleItemsArranger.ScheduleItem) { root.LayoutParameters.Height = ThemeHelper.AsPx(Context, item.Height); } _schedulesContent.AddView(root); }
private void AddVisualItem(View visual, DayScheduleItemsArranger.BaseScheduleItem item, DayOfWeek day) { View root; if (item.NumOfColumns > 1) { var grid = new LinearLayout(Context) { LayoutParameters = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MatchParent, LinearLayout.LayoutParams.WrapContent), Orientation = Orientation.Horizontal }; for (int i = 0; i < item.NumOfColumns; i++) { View colView; if (i == item.Column) { colView = visual; } else { colView = new View(Context); } colView.LayoutParameters = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MatchParent) { Weight = 1 }; grid.AddView(colView); } root = grid; } else { root = visual; } double leftMargin = item.LeftOffset; leftMargin += 12; root.LayoutParameters = new FrameLayout.LayoutParams(LayoutParams.MatchParent, LayoutParams.WrapContent) { LeftMargin = ThemeHelper.AsPx(Context, leftMargin), TopMargin = ThemeHelper.AsPx(Context, item.TopOffset + INITIAL_MARGIN + _currAllDayItemsViewsHeight), RightMargin = ThemeHelper.AsPx(Context, 12), BottomMargin = ThemeHelper.AsPx(Context, 24) }; if (item is DayScheduleItemsArranger.ScheduleItem) { root.LayoutParameters.Height = ThemeHelper.AsPx(Context, item.Height); } ViewGroup viewGroup = _scheduleHost.GetChildAt(getColumn(day)) as ViewGroup; viewGroup.AddView(root); }
private void AddVisualItem(UIView visual, DayScheduleItemsArranger.BaseScheduleItem item) { UIScheduleView.AddVisualItem(visual, item, _scheduleItemsColumn, colPadding: 0); visual.PinToTop(_scheduleItemsColumn, (int)item.TopOffset); }
public static void AddVisualItem(UIView visual, DayScheduleItemsArranger.BaseScheduleItem item, UIView addTo, int colPadding) { visual.TranslatesAutoresizingMaskIntoConstraints = false; addTo.Add(visual); int leftStart = (int)item.LeftOffset + colPadding; if (item.NumOfColumns > 1) { const float spacingBetweenConflicting = 4; float spacingOffset = spacingBetweenConflicting / item.NumOfColumns; try { if (item.Column == 0) { visual.PinToLeft(addTo, left: leftStart); } else { addTo.AddConstraint(NSLayoutConstraint.Create( visual, NSLayoutAttribute.Leading, NSLayoutRelation.Equal, addTo, NSLayoutAttribute.Trailing, // Trailing == width of column multiplier: (float)item.Column / item.NumOfColumns, constant: spacingBetweenConflicting * (item.Column - 1) + spacingOffset)); } if (item.Column == item.NumOfColumns - 1) { visual.PinToRight(addTo, right: colPadding); } else { addTo.AddConstraint(NSLayoutConstraint.Create( visual, NSLayoutAttribute.Trailing, NSLayoutRelation.Equal, addTo, NSLayoutAttribute.Trailing, multiplier: (float)(item.Column + 1) / item.NumOfColumns, constant: spacingBetweenConflicting * -1 * (item.NumOfColumns - item.Column - 2) - spacingOffset)); } // Note that this results in middle items being wider than left/right, but the case where there's three items is a niche case anyways } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); } } else { visual.StretchWidth(addTo, left: leftStart, right: colPadding); } if (item is DayScheduleItemsArranger.ScheduleItem) { visual.SetHeight((int)item.Height); } }