protected override Aligment GetAligment(LayoutOrient layoutOrient, AligmentTag aligmentTag)
        {
            switch (layoutOrient)
            {
            case LayoutOrient.Fixed:
                if (aligmentTag == AligmentTag.Start)
                {
                    return(Aligment.Top);
                }
                if (aligmentTag == AligmentTag.End)
                {
                    return(Aligment.Bottom);
                }
                break;

            case LayoutOrient.Extend:
                if (aligmentTag == AligmentTag.Start)
                {
                    return(Aligment.Left);
                }
                if (aligmentTag == AligmentTag.End)
                {
                    return(Aligment.Right);
                }
                break;

            default:
                return(Aligment.Left);
            }

            return(Aligment.Left);
        }
        protected override float GetContentPos(LayoutOrient layoutOrient)
        {
            switch (layoutOrient)
            {
            case LayoutOrient.Extend:
                return(m_ScrollRect.content.anchoredPosition.x);

            case LayoutOrient.Fixed:
                return(m_ScrollRect.content.anchoredPosition.y);

            default:
                return(0);
            }
        }
        protected override float GetShowLength(LayoutOrient layoutOrient)
        {
            switch (layoutOrient)
            {
            case LayoutOrient.Extend:
                return(m_ScrollRect.GetComponent <RectTransform>().rect.width);

            case LayoutOrient.Fixed:
                return(m_ScrollRect.GetComponent <RectTransform>().rect.height);

            default:
                return(0);
            }
        }
        protected override float GetPaddingLength(LayoutOrient layoutOrient)
        {
            switch (layoutOrient)
            {
            case LayoutOrient.Extend:
                return(m_LayoutLeft + m_LayoutRight);

            case LayoutOrient.Fixed:
                return(m_LayoutTop + m_LayoutBottom);

            default:
                return(0);
            }
        }
        protected override float GetContentLength(LayoutOrient layoutOrient)
        {
            switch (layoutOrient)
            {
            case LayoutOrient.Extend:
                return(m_ScrollRect.content.rect.width);

            case LayoutOrient.Fixed:
                return(m_ScrollRect.content.rect.height);

            default:
                return(0);
            }
        }
        protected override float GetItemLength(LayoutOrient layoutOrient, int index)
        {
            ReuseItem reuseItem = Items.Find((item) => item.Index == index);

            if (reuseItem == null)
            {
                if (Items.Count > 0)
                {
                    reuseItem = Items[0];
                }
                else
                {
                    switch (layoutOrient)
                    {
                    case LayoutOrient.Extend:
                        return(m_ItemDefaultSize.Extend);

                    case LayoutOrient.Fixed:
                        return(m_ItemDefaultSize.Fixed);

                    default:
                        return(0);
                    }
                }
            }

            switch (layoutOrient)
            {
            case LayoutOrient.Extend:
                return(reuseItem.GetComponent <RectTransform>().rect.width);

            case LayoutOrient.Fixed:
                return(reuseItem.GetComponent <RectTransform>().rect.height);

            default:
                return(0);
            }
        }