@Override
    protected void onDraw(Canvas canvas) {
        if (mDividerDrawableVertical == null && mDividerDrawableHorizontal == null) {
            return;
        }
        if (mShowDividerHorizontal == SHOW_DIVIDER_NONE
                && mShowDividerVertical == SHOW_DIVIDER_NONE) {
            return;
        }

        int layoutDirection = ViewCompat.getLayoutDirection(this);
        boolean isRtl;
        boolean fromBottomToTop = false;
        switch (mFlexDirection) {
            case FLEX_DIRECTION_ROW:
                isRtl = layoutDirection == ViewCompat.LAYOUT_DIRECTION_RTL;
                if (mFlexWrap == FLEX_WRAP_WRAP_REVERSE) {
                    fromBottomToTop = true;
                }
                drawDividersHorizontal(canvas, isRtl, fromBottomToTop);
                break;
            case FLEX_DIRECTION_ROW_REVERSE:
                isRtl = layoutDirection != ViewCompat.LAYOUT_DIRECTION_RTL;
                if (mFlexWrap == FLEX_WRAP_WRAP_REVERSE) {
                    fromBottomToTop = true;
                }
                drawDividersHorizontal(canvas, isRtl, fromBottomToTop);
                break;
            case FLEX_DIRECTION_COLUMN:
                isRtl = layoutDirection == ViewCompat.LAYOUT_DIRECTION_RTL;
                if (mFlexWrap == FLEX_WRAP_WRAP_REVERSE) {
                    isRtl = !isRtl;
                }
                fromBottomToTop = false;
                drawDividersVertical(canvas, isRtl, fromBottomToTop);
                break;
            case FLEX_DIRECTION_COLUMN_REVERSE:
                isRtl = layoutDirection == ViewCompat.LAYOUT_DIRECTION_RTL;
                if (mFlexWrap == FLEX_WRAP_WRAP_REVERSE) {
                    isRtl = !isRtl;
                }
                fromBottomToTop = true;
                drawDividersVertical(canvas, isRtl, fromBottomToTop);
                break;
        }
    }
Place a single View when the layout direction is vertical ({@link #mFlexDirection} is
either {@link #FLEX_DIRECTION_COLUMN} or {@link #FLEX_DIRECTION_COLUMN_REVERSE}).

@param view       the View to be placed
@param flexLine   the {@link FlexLine} where the View belongs to
@param isRtl      {@code true} if the layout direction is right to left, {@code false}
                  otherwise
@param alignItems the align items attribute of this FlexboxLayout
@param left       the left position of the flex line where the View belongs to. The actual
                  View's left position is shifted depending on the isRtl and alignItems
                  attributes
@param top        the top position of the View, which the View's margin is already taken
                  into account
@param right      the right position of the flex line where the View belongs to. The actual
                  View's right position is shifted depending on the isRtl and alignItems
                  attributes
@param bottom     the bottom position of the View, which the View's margin is already taken
                  into account
@see #getAlignItems()
@see #setAlignItems(int)
@see LayoutParams#alignSelf
common/src/main/java/com/sxjs/common/widget/flexboxlayout/FlexboxLayout.java