diff --git a/README.md b/README.md index e8d65bc..6122095 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,9 @@ There exist further attributes which let you customize the general appearance of app:snp_orientation="horizontal" app:snp_valueMarginEnd="5dp" app:snp_valueMarginStart="5dp" + app:snp_value_text_color="@color/colorPrimary" + app:snp_value_text_size="16sp" + app:snp_value_text_appearance="?android:attr/textAppearanceMedium" app:snp_buttonPaddingBottom="8dp" app:snp_buttonPaddingLeft="8dp" app:snp_buttonPaddingRight="8dp" diff --git a/library/src/main/java/com/michaelmuenzer/android/scrollablennumberpicker/ScrollableNumberPicker.java b/library/src/main/java/com/michaelmuenzer/android/scrollablennumberpicker/ScrollableNumberPicker.java index ef9eb73..5e189a2 100755 --- a/library/src/main/java/com/michaelmuenzer/android/scrollablennumberpicker/ScrollableNumberPicker.java +++ b/library/src/main/java/com/michaelmuenzer/android/scrollablennumberpicker/ScrollableNumberPicker.java @@ -10,6 +10,7 @@ import android.support.annotation.NonNull; import android.support.v4.content.ContextCompat; import android.support.v4.graphics.drawable.DrawableCompat; +import android.support.v4.widget.TextViewCompat; import android.util.AttributeSet; import android.util.TypedValue; import android.view.Gravity; @@ -28,6 +29,7 @@ import static android.view.KeyEvent.KEYCODE_DPAD_UP; public class ScrollableNumberPicker extends LinearLayout { + private final static int INVALID_RES = -1; private final static float SLOWING_FACTOR = 1.25f; private final static int MIN_UPDATE_INTERVAL_MS = 50; @@ -47,6 +49,9 @@ public class ScrollableNumberPicker extends LinearLayout { private int mMaxValue; private int mMinValue; private int mStepSize; + private float mValueTextSize; + private int mValueTextColor; + private int mValueTextAppearanceResId; private boolean mScrollEnabled; private int mUpdateIntervalMillis; @@ -158,12 +163,38 @@ public void setValue(int value) { private void setValue() { mValueTextView.setText(String.valueOf(mValue)); - if (mListener != null) { mListener.onNumberPicked(mValue); } } + private void initValueView() { + mValueTextView = (TextView) findViewById(R.id.text_value); + + if (mValueTextAppearanceResId != INVALID_RES) { + TextViewCompat.setTextAppearance(mValueTextView, mValueTextAppearanceResId); + } + + if (mValueTextColor != INVALID_RES) { + mValueTextView.setTextColor(mValueTextColor); + } + + if (mValueTextSize != INVALID_RES) { + mValueTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mValueTextSize); + } + + LinearLayout.LayoutParams layoutParams = (LayoutParams) mValueTextView.getLayoutParams(); + if (mOrientation == HORIZONTAL) { + layoutParams.setMargins(mValueMarginStart, 0, mValueMarginEnd, 0); + } else { + layoutParams.setMargins(0, mValueMarginStart, 0, mValueMarginEnd); + } + + mValueTextView.setLayoutParams(layoutParams); + + setValue(); + } + @SuppressWarnings("unused") public int getMaxValue() { return mMaxValue; @@ -311,6 +342,12 @@ private void init(Context context, AttributeSet attrs) { mValue = typedArray.getInt(R.styleable.ScrollableNumberPicker_snp_value, res.getInteger(R.integer.default_value)); + mValueTextSize = typedArray.getDimension(R.styleable.ScrollableNumberPicker_snp_value_text_size, + INVALID_RES); + mValueTextColor = typedArray.getColor(R.styleable.ScrollableNumberPicker_snp_value_text_color, + INVALID_RES); + mValueTextAppearanceResId = typedArray.getResourceId(R.styleable.ScrollableNumberPicker_snp_value_text_appearance, INVALID_RES); + mScrollEnabled = typedArray.getBoolean(R.styleable.ScrollableNumberPicker_snp_scrollEnabled, res.getBoolean(R.bool.default_scrollEnabled)); @@ -332,7 +369,6 @@ private void init(Context context, AttributeSet attrs) { typedArray.recycle(); initViews(); - setValue(); mAutoIncrement = false; mAutoDecrement = false; @@ -341,20 +377,12 @@ private void init(Context context, AttributeSet attrs) { } private void initViews() { - mValueTextView = (TextView) findViewById(R.id.text_value); - LinearLayout.LayoutParams layoutParams = (LayoutParams) mValueTextView.getLayoutParams(); - if (mOrientation == HORIZONTAL) { - layoutParams.setMargins(mValueMarginStart, 0, mValueMarginEnd, 0); - } else { - layoutParams.setMargins(0, mValueMarginStart, 0, mValueMarginEnd); - } - mValueTextView.setLayoutParams(layoutParams); - setOrientation(mOrientation); setGravity(Gravity.CENTER); - initButtonPlus(); - initButtonMinus(); + initValueView(); + initButtonPlusView(); + initButtonMinusView(); if (mScrollEnabled) { setOnTouchListener(new OnTouchListener() { @@ -431,7 +459,7 @@ public boolean onTouch(View view, MotionEvent motionEvent) { } } - private void initButtonPlus() { + private void initButtonPlusView() { setButtonPlusImage(); mPlusButton.setOnClickListener(new OnClickListener() { @@ -465,7 +493,7 @@ public boolean onTouch(View v, MotionEvent event) { }); } - private void initButtonMinus() { + private void initButtonMinusView() { setButtonMinusImage(); mMinusButton.setOnClickListener(new View.OnClickListener() { diff --git a/library/src/main/res/values/attrs.xml b/library/src/main/res/values/attrs.xml index e6644b8..715a7f5 100644 --- a/library/src/main/res/values/attrs.xml +++ b/library/src/main/res/values/attrs.xml @@ -17,6 +17,10 @@ + + + + diff --git a/library/src/main/res/values/dimen.xml b/library/src/main/res/values/dimens.xml similarity index 100% rename from library/src/main/res/values/dimen.xml rename to library/src/main/res/values/dimens.xml diff --git a/sample-mobile/src/main/res/layout/activity_main.xml b/sample-mobile/src/main/res/layout/activity_main.xml index df90653..be3c0c6 100644 --- a/sample-mobile/src/main/res/layout/activity_main.xml +++ b/sample-mobile/src/main/res/layout/activity_main.xml @@ -50,7 +50,7 @@ + app:snp_valueMarginStart="8dp" + app:snp_value_text_appearance="?android:attr/textAppearanceMedium"/> + app:snp_valueMarginStart="5dp" + app:snp_value_text_color="@color/colorPrimary" + app:snp_value_text_size="16sp"/>