public void LinkTo(LinkedScrollView lsv) { if (lsv != null) { Links.Add(lsv); lsv.Links.Add(this); Post(() => { ScrollTo(lsv.ScrollX, lsv.ScrollY); }); } }
public HourView(Context context, int startHour, int endHour) : base(context, startHour, endHour) { ScrollView = new HourScrollView(context, this); if (Build.VERSION.SdkInt >= BuildVersionCodes.GingerbreadMr1) { ScrollView.OverScrollMode = OverScrollMode.Never; } AddView(ScrollView); MainLayout = new LinearLayout(context); MainLayout.Orientation = Orientation.Vertical; ScrollView.AddView(MainLayout); HourHeightListeners = new List <TimeLayout>(); }
protected override void Update() { RemoveAllViews(); dtView = new DateTitleView(Context, Day); AddView(dtView); var dayEvents = Timetable.GetEvents(Day, day => {}, (day, events) => Update(), e => { errorUpdating = e; Console.WriteLine(e); Update(); }); if (errorUpdating != null && !dayEvents.Any()) { TextView errorText = new TextView(Context); errorText.Text = "Er is een fout opgetreden:\n\n" + errorUpdating.ToShortString() + "\n\n" + "Raak deze tekst aan om het opnieuw te proberen."; errorText.Gravity = GravityFlags.Center; errorText.LayoutParameters = new LayoutParams(LayoutParams.MatchParent, LayoutParams.MatchParent); int padding = Utils.DpToPx(40); errorText.SetPadding(padding, 0, padding, 0); errorText.Clickable = true; errorText.Click += (sender, e) => { errorUpdating = null; Update(); }; AddView(errorText); } else { if (Timetable.UpdatesInProgress.Contains(Day.Week)) { AddView(new LoadingView(Context)); } else { if (dayScrollView != null) { dayScrollView.Unlink(); } dayScrollView = new LinkedScrollView(Context); dayScrollView.LinkTo(HourView.ScrollView); dayScrollView.VerticalScrollBarEnabled = showScroll; if (Build.VERSION.SdkInt >= BuildVersionCodes.GingerbreadMr1) { dayScrollView.OverScrollMode = OverScrollMode.Never; } AddView(dayScrollView); RelativeLayout layout = MakeLayout(dayEvents, StartHour); layout.SetPadding(0, HourHeight / 2, 0, 0); int numHours = HourView.EndHour - HourView.StartHour + 1; layout.LayoutParameters.Width = LayoutParams.MatchParent; layout.LayoutParameters.Height = numHours * HourView.HourHeight; //layout.SetMinimumHeight(numHours * HourView.HourHeight); //Console.WriteLine("MinHeight: " + numHours * HourView.HourHeight); dayScrollView.AddView(layout); } } }
private void ScrollTo(int x, int y, LinkedScrollView origin) { ScrollOrigin.Add(origin); base.ScrollTo(x, y); }
public void Unlink(LinkedScrollView lsv) { Links.Remove(lsv); lsv.Links.Remove(this); }