/// <summary>Alternative method of fitWidthSize().</summary>
        /// <remarks>
        /// Alternative method of fitWidthSize().
        /// The main difference is this method works after main thread draw the ui components.
        /// </remarks>
        public virtual void FitWidthSize2(bool scrollingLeft)
        {
            // The below line helps to change left & right value of the each column
            // header views
            // without using requestLayout().
            mColumnHeaderLayoutManager.CustomRequestLayout();
            // Get the right scroll position information from Column header RecyclerView
            int columnHeaderScrollPosition = mTableView.GetColumnHeaderRecyclerView().GetScrolledX();
            int columnHeaderOffset         = mColumnHeaderLayoutManager.GetFirstItemLeft();
            int columnHeaderFirstItem      = mColumnHeaderLayoutManager.FindFirstVisibleItemPosition();

            // Fit all visible columns widths
            for (int i = mColumnHeaderLayoutManager.FindFirstVisibleItemPosition();
                 i < mColumnHeaderLayoutManager.FindLastVisibleItemPosition() + 1;
                 i++)
            {
                FitSize2(i, scrollingLeft, columnHeaderScrollPosition, columnHeaderOffset, columnHeaderFirstItem);
            }

            mNeedSetLeft = false;
        }