diff --git a/pinview/src/main/java/com/chaos/view/PinView.java b/pinview/src/main/java/com/chaos/view/PinView.java index e520437..547adc1 100644 --- a/pinview/src/main/java/com/chaos/view/PinView.java +++ b/pinview/src/main/java/com/chaos/view/PinView.java @@ -182,6 +182,9 @@ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { } else { float boxesWidth = (mPinBoxCount - 1) * mPinBoxMargin + mPinBoxCount * boxHeight; width = Math.round(boxesWidth + getPaddingRight() + getPaddingLeft()); + if (mPinBoxMargin == 0) { + width -= 2 * (mPinBoxCount - 1) * mBorderWidth; + } } if (heightMode == MeasureSpec.EXACTLY) { @@ -366,8 +369,13 @@ private void updateRoundRectPath(RectF rectF, float rx, float ry, private void updateBoxRectF(int i) { float startX = (getWidth() - (mPinBoxCount - 1) * mPinBoxMargin - mPinBoxCount * mPinBoxHeight) / 2; - + if (mPinBoxMargin == 0) { + startX += (mPinBoxCount - 1) * mBorderWidth; + } float left = startX + mPinBoxHeight * i + mPinBoxMargin * i + mBorderWidth; + if (mPinBoxMargin == 0 && i > 0) { + left = left - 2 * mBorderWidth * i; + } float right = left + mPinBoxHeight - 2 * mBorderWidth; float top = mBorderWidth + getPaddingTop(); float bottom = top + mPinBoxHeight - 2 * mBorderWidth; diff --git a/simple/src/main/res/layout/activity_main.xml b/simple/src/main/res/layout/activity_main.xml index 8070837..17e5c70 100644 --- a/simple/src/main/res/layout/activity_main.xml +++ b/simple/src/main/res/layout/activity_main.xml @@ -39,7 +39,7 @@ app:borderWidth="2dp" app:boxCount="5" app:boxHeight="48dp" - app:boxMargin="4dp" + app:boxMargin="0dp" app:boxRadius="4dp" />