diff --git a/library/res/values/vpi__attrs.xml b/library/res/values/vpi__attrs.xml
index a4d1f1093..9831d8917 100644
--- a/library/res/values/vpi__attrs.xml
+++ b/library/res/values/vpi__attrs.xml
@@ -53,6 +53,8 @@
+
+
diff --git a/library/res/values/vpi__defaults.xml b/library/res/values/vpi__defaults.xml
index e4d44cbff..583a656c8 100644
--- a/library/res/values/vpi__defaults.xml
+++ b/library/res/values/vpi__defaults.xml
@@ -23,6 +23,7 @@
false
#FFDDDDDD
1dp
+ 0dp
12dp
4dp
diff --git a/library/src/com/viewpagerindicator/CirclePageIndicator.java b/library/src/com/viewpagerindicator/CirclePageIndicator.java
index f441e89fd..d12ac5e93 100644
--- a/library/src/com/viewpagerindicator/CirclePageIndicator.java
+++ b/library/src/com/viewpagerindicator/CirclePageIndicator.java
@@ -62,7 +62,7 @@ public class CirclePageIndicator extends View implements PageIndicator {
private float mLastMotionX = -1;
private int mActivePointerId = INVALID_POINTER;
private boolean mIsDragging;
-
+ private float mExtraSpacing;
public CirclePageIndicator(Context context) {
this(context, null);
@@ -84,6 +84,7 @@ public CirclePageIndicator(Context context, AttributeSet attrs, int defStyle) {
final int defaultStrokeColor = res.getColor(R.color.default_circle_indicator_stroke_color);
final float defaultStrokeWidth = res.getDimension(R.dimen.default_circle_indicator_stroke_width);
final float defaultRadius = res.getDimension(R.dimen.default_circle_indicator_radius);
+ final float defaultExtraSpacing = res.getDimension(R.dimen.default_circle_indicator_extra_spacing);
final boolean defaultCentered = res.getBoolean(R.bool.default_circle_indicator_centered);
final boolean defaultSnap = res.getBoolean(R.bool.default_circle_indicator_snap);
@@ -101,6 +102,7 @@ public CirclePageIndicator(Context context, AttributeSet attrs, int defStyle) {
mPaintFill.setColor(a.getColor(R.styleable.CirclePageIndicator_fillColor, defaultFillColor));
mRadius = a.getDimension(R.styleable.CirclePageIndicator_radius, defaultRadius);
mSnap = a.getBoolean(R.styleable.CirclePageIndicator_snap, defaultSnap);
+ mExtraSpacing = a.getDimension(R.styleable.CirclePageIndicator_extraSpacing, defaultExtraSpacing);
Drawable background = a.getDrawable(R.styleable.CirclePageIndicator_android_background);
if (background != null) {
@@ -194,6 +196,10 @@ public boolean isSnap() {
return mSnap;
}
+ public void setExtraSpacing(float extraSpacing) {
+ mExtraSpacing = extraSpacing;
+ }
+
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
@@ -227,7 +233,7 @@ protected void onDraw(Canvas canvas) {
shortPaddingBefore = getPaddingLeft();
}
- final float threeRadius = mRadius * 3;
+ final float threeRadius = mRadius * 3 + mExtraSpacing;
final float shortOffset = shortPaddingBefore + mRadius;
float longOffset = longPaddingBefore + mRadius;
if (mCentered) {
@@ -469,7 +475,7 @@ private int measureLong(int measureSpec) {
//Calculate the width according the views count
final int count = mViewPager.getAdapter().getCount();
result = (int)(getPaddingLeft() + getPaddingRight()
- + (count * 2 * mRadius) + (count - 1) * mRadius + 1);
+ + (count * 2 * mRadius) + (count - 1) * (mRadius + mExtraSpacing) + 1);
//Respect AT_MOST value if that was what is called for by measureSpec
if (specMode == MeasureSpec.AT_MOST) {
result = Math.min(result, specSize);