From 0a30457b6cbf55316dbe58fe4b7d328fdc616cdd Mon Sep 17 00:00:00 2001 From: Mateus Pires Date: Thu, 2 Jul 2020 18:25:01 -0300 Subject: [PATCH] Add align and sidePadding attributes --- .../shawnlin/numberpicker/NumberPicker.java | 27 ++++++++++++++++++- library/src/main/res/values/attrs.xml | 6 +++++ sample/src/main/res/layout/content_main.xml | 8 ++++-- 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/library/src/main/java/com/shawnlin/numberpicker/NumberPicker.java b/library/src/main/java/com/shawnlin/numberpicker/NumberPicker.java index ece35cc..e27baca 100644 --- a/library/src/main/java/com/shawnlin/numberpicker/NumberPicker.java +++ b/library/src/main/java/com/shawnlin/numberpicker/NumberPicker.java @@ -156,6 +156,11 @@ public class NumberPicker extends LinearLayout { */ private static final int DEFAULT_TEXT_ALIGN = CENTER; + /** + * The default content alignment. + */ + private static final int DEFAULT_ALIGN = CENTER; + /** * The default color of text. */ @@ -630,6 +635,16 @@ private enum DividerType { */ private ViewConfiguration mViewConfiguration; + /** + * The content alignment. + */ + private int mAlign = DEFAULT_ALIGN; + + /** + * The padding applied to the content when it's not centered (align is "left" or "right"). + */ + private int mSidePadding = 0; + /** * Interface to listen for changes of the current value. */ @@ -814,6 +829,9 @@ public NumberPicker(Context context, AttributeSet attrs, int defStyle) { R.styleable.NumberPicker_np_hideWheelUntilFocused, false); mAccessibilityDescriptionEnabled = attributes.getBoolean( R.styleable.NumberPicker_np_accessibilityDescriptionEnabled, true); + mAlign = attributes.getInt(R.styleable.NumberPicker_np_align, mAlign); + mSidePadding = attributes.getDimensionPixelSize( + R.styleable.NumberPicker_np_sidePadding, mSidePadding); // By default LinearLayout that we extend is not drawn. This is // its draw() method is not called but dispatchDraw() is called @@ -1767,7 +1785,14 @@ protected void onDraw(Canvas canvas) { canvas.clipRect(mLeftDividerLeft, 0, mRightDividerRight, getBottom()); } } else { - x = (getRight() - getLeft()) / 2f; + if (mAlign == LEFT) { + x = getLeft() + mSidePadding; + } else if (mAlign == RIGHT) { + x = getRight() - getMaxTextSize() - mSidePadding; + } else { + x = (getRight() - getLeft()) / 2f; + } + y = mCurrentScrollOffset; if (mRealWheelItemCount < DEFAULT_WHEEL_ITEM_COUNT) { canvas.clipRect(0, mTopDividerTop, getRight(), mBottomDividerBottom); diff --git a/library/src/main/res/values/attrs.xml b/library/src/main/res/values/attrs.xml index 3f2a4e0..cad2fe8 100644 --- a/library/src/main/res/values/attrs.xml +++ b/library/src/main/res/values/attrs.xml @@ -56,5 +56,11 @@ + + + + + + diff --git a/sample/src/main/res/layout/content_main.xml b/sample/src/main/res/layout/content_main.xml index 51fa40d..93e39e0 100644 --- a/sample/src/main/res/layout/content_main.xml +++ b/sample/src/main/res/layout/content_main.xml @@ -16,8 +16,11 @@ + android:layout_width="match_parent" + android:layout_height="match_parent" + app:np_align="left" + app:np_sidePadding="20dp" + app:np_wheelItemCount="7" />