When using vertical IconView with AllowArbitraryItemHeight = true or horizontal IconVIew with AllowArbitraryItemWidth = true in some cases the last items are cut. To reproduce: 1. Add a RadListView and use the following code snipept: public Form1() { InitializeComponent(); string[] lines = Properties.Resources.Folders.Split(Environment.NewLine.ToArray(), StringSplitOptions.RemoveEmptyEntries); BindingList<string> items = new BindingList<string>(); this.radListView1.BeginUpdate(); foreach (string line in lines) { this.radListView1.Items.Add(line); } this.radListView1.EndUpdate(); this.radListView1.ViewType = Telerik.WinControls.UI.ListViewType.IconsView; radListView1.ListViewElement.ViewElement.Orientation = Orientation.Horizontal; radListView1.AllowArbitraryItemWidth = true; radListView1.AllowArbitraryItemHeight = false; } Workaround: public class CustomListView : RadListView { public override string ThemeClassName { get { return typeof(RadListView).FullName; } set { base.ThemeClassName = value; } } protected override RadListViewElement CreateListViewElement() { return new CustomListViewElement(); } } public class CustomListViewElement : RadListViewElement { protected override BaseListViewElement CreateViewElement() { if (this.ViewType == ListViewType.IconsView) { return new CustomIconViewElement(this); } return base.CreateViewElement(); } protected override Type ThemeEffectiveType { get { return typeof(RadListViewElement); } } } public class CustomIconViewElement : IconListViewElement { public CustomIconViewElement(RadListViewElement owner) : base(owner) { } protected override VirtualizedStackContainer<ListViewDataItem> CreateViewElement() { return new CustomIconViewContainer(this); } protected override Type ThemeEffectiveType { get { return typeof(IconListViewElement); } } } public class CustomIconViewContainer : IconListViewContainer { public CustomIconViewContainer(IconListViewElement owner) : base(owner) { } private bool Grouped { get { return this.owner.Owner.ShowGroups && (this.owner.Owner.EnableCustomGrouping || this.owner.Owner.EnableGrouping); } } RectangleF clientRect; protected override bool BeginMeasure(SizeF availableSize) { this.clientRect = new RectangleF(Padding.Left, Padding.Top, availableSize.Width - Padding.Horizontal, availableSize.Height - Padding.Vertical); return base.BeginMeasure(availableSize); } protected override SizeF ArrangeVertical(SizeF finalSize) { float x = clientRect.X, y = clientRect.Y + this.ScrollOffset.Height; float maxHeight = 0; float maxWidth = 0; foreach (RadElement element in this.Children) { BaseListViewVisualItem visualItem = element as BaseListViewVisualItem; if (visualItem == null || visualItem.Data == null) continue; Size elementSize = this.ElementProvider.GetElementSize(visualItem.Data).ToSize(); if (element is BaseListViewGroupVisualItem) { if (x != clientRect.X) { x = clientRect.X; y += maxHeight; maxHeight = elementSize.Height; } maxHeight = Math.Max(maxHeight, elementSize.Height); maxWidth = Math.Max(maxWidth, elementSize.Width); RectangleF arrangeRect = new RectangleF(new PointF(x, y), elementSize); element.Arrange(arrangeRect); x = clientRect.X; y += elementSize.Height + this.ItemSpacing; } else { if (x + elementSize.Width > clientRect.Right && x != clientRect.X) { x = clientRect.X; y += maxHeight + this.ItemSpacing; maxHeight = elementSize.Height; } maxHeight = Math.Max(maxHeight, elementSize.Height); maxWidth = Math.Max(maxWidth, elementSize.Width); if (x == clientRect.X && this.Grouped && (this.owner.Owner.Groups.Count > 0) && !this.owner.Owner.FullRowSelect) { x += this.owner.Owner.GroupIndent; } RectangleF arrangeRect = new RectangleF(new PointF(x, y), elementSize); if (this.RightToLeft) { arrangeRect = LayoutUtils.RTLTranslateNonRelative(arrangeRect, clientRect); } element.Arrange(arrangeRect); x += elementSize.Width + this.ItemSpacing; } } return finalSize; } protected override System.Drawing.SizeF ArrangeUngroupedHorizontal(System.Drawing.SizeF finalSize) { float x = clientRect.X + this.ScrollOffset.Width, y = clientRect.Y; float maxHeight = 0; float maxWidth = 0; foreach (RadElement element in this.Children) { BaseListViewVisualItem visualItem = element as BaseListViewVisualItem; if (visualItem == null || visualItem.Data == null) continue; Size elementSize = this.ElementProvider.GetElementSize(visualItem.Data).ToSize(); if (y + elementSize.Height > clientRect.Bottom && y != clientRect.Y) { y = clientRect.Y; x += maxWidth + this.ItemSpacing; maxWidth = elementSize.Width; } maxHeight = Math.Max(maxHeight, elementSize.Height); maxWidth = Math.Max(maxWidth, elementSize.Width); RectangleF arrangeRect = new RectangleF(new PointF(x, y), elementSize); if (this.RightToLeft) { arrangeRect = LayoutUtils.RTLTranslateNonRelative(arrangeRect, clientRect); } element.Arrange(arrangeRect); y += elementSize.Height + this.ItemSpacing; } return finalSize; } protected override Type ThemeEffectiveType { get { return typeof(IconListViewContainer); } } }