Skip to content

Commit 0be0764

Browse files
committed
Making some improvement
1 parent ccaf7fe commit 0be0764

File tree

4 files changed

+35
-21
lines changed

4 files changed

+35
-21
lines changed

smartmaterialspinner/src/main/java/com/chivorn/smartmaterialspinner/SmartMaterialSpinner.java

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ public class SmartMaterialSpinner<T> extends AppCompatSpinner implements Adapter
105105
private int floatingLabelTopSpacing;
106106
private int floatingLabelBottomSpacing;
107107
private int floatingLabelInsideSpacing;
108-
private int rightLeftSpinnerPadding;
108+
private int leftRightSpinnerPadding;
109109
private int minContentHeight;
110110
private int arrowPaddingLeft;
111111
private int arrowPaddingTop;
@@ -273,7 +273,7 @@ private void initAttributes(Context context, AttributeSet attrs) {
273273
minNbErrorLine = typedArray.getInt(R.styleable.SmartMaterialSpinner_smsp_nbErrorLine, 1);
274274
currentNbErrorLines = minNbErrorLine;
275275
alignLabel = typedArray.getBoolean(R.styleable.SmartMaterialSpinner_smsp_alignLabel, true);
276-
underlineSize = typedArray.getDimension(R.styleable.SmartMaterialSpinner_smsp_underlineSize, 0.6f);
276+
underlineSize = typedArray.getDimension(R.styleable.SmartMaterialSpinner_smsp_underlineSize, getResources().getDimensionPixelSize(R.dimen.smsp_underline_size));
277277
arrowColor = typedArray.getColor(R.styleable.SmartMaterialSpinner_smsp_arrowColor, baseColor);
278278
arrowSize = typedArray.getDimension(R.styleable.SmartMaterialSpinner_smsp_arrowSize, dpToPx(DEFAULT_ARROW_WIDTH_DP));
279279
enableErrorLabel = typedArray.getBoolean(R.styleable.SmartMaterialSpinner_smsp_enableErrorLabel, true);
@@ -359,11 +359,12 @@ public void onGlobalLayout() {
359359
SmartMaterialSpinner.this.getViewTreeObserver().removeOnGlobalLayoutListener(this);
360360
}
361361
if (getWidth() != 0 && getHeight() != 0) {
362-
SmartMaterialSpinner.this.setDropDownWidth(getWidth());
362+
SmartMaterialSpinner.this.setDropDownWidth(getWidth() - leftRightSpinnerPadding * 2);
363363
if (getDropDownVerticalOffset() <= 0) {
364364
int underlineHeight = dpToPx(underlineSize);
365365
int underlineStartY = getHeight() - getPaddingBottom() + underlineTopSpacing;
366366
SmartMaterialSpinner.this.setDropDownVerticalOffset(underlineStartY + underlineHeight);
367+
SmartMaterialSpinner.this.setDropDownHorizontalOffset(SmartMaterialSpinner.this.getDropDownHorizontalOffset() + leftRightSpinnerPadding - getPaddingLeft());
367368
dropdownHeightUpdated = true;
368369
}
369370
}
@@ -448,13 +449,14 @@ private void initDimensions(Context context, AttributeSet attrs) {
448449
errorTextPaddingBottom = getResources().getDimensionPixelSize(R.dimen.smsp_error_text_padding_bottom);
449450
floatingLabelTopSpacing = getResources().getDimensionPixelSize(R.dimen.smsp_floating_label_top_spacing);
450451
floatingLabelBottomSpacing = getResources().getDimensionPixelSize(R.dimen.smsp_floating_label_bottom_spacing);
451-
rightLeftSpinnerPadding = alignLabel ? getResources().getDimensionPixelSize(R.dimen.smsp_right_left_spinner_padding) : 0;
452+
//leftRightSpinnerPadding = alignLabel ? getResources().getDimensionPixelSize(R.dimen.smsp_left_right_spinner_padding) : 0;
453+
leftRightSpinnerPadding = typedArray.getDimensionPixelSize(R.styleable.SmartMaterialSpinner_smsp_paddingLeftRight, getResources().getDimensionPixelSize(R.dimen.smsp_left_right_spinner_padding));
452454
floatingLabelInsideSpacing = getResources().getDimensionPixelSize(R.dimen.smsp_floating_label_inside_spacing);
453455
errorTextPaddingTop = getResources().getDimensionPixelSize(R.dimen.smsp_error_text_padding_top);
454456
errorTextPaddingTopBottom = getResources().getDimensionPixelSize(R.dimen.smsp_error_text_padding_top_bottom);
455457
minContentHeight = getResources().getDimensionPixelSize(R.dimen.smsp_min_content_height);
456458

457-
arrowPaddingLeft = typedArray.getDimensionPixelSize(R.styleable.SmartMaterialSpinner_smsp_arrowPaddingLeft, 0);
459+
arrowPaddingLeft = typedArray.getDimensionPixelSize(R.styleable.SmartMaterialSpinner_smsp_arrowPaddingLeft, getResources().getDimensionPixelSize(R.dimen.smsp_default_arrow_padding_left));
458460
arrowPaddingTop = typedArray.getDimensionPixelSize(R.styleable.SmartMaterialSpinner_smsp_arrowPaddingTop, 0);
459461
arrowPaddingRight = typedArray.getDimensionPixelSize(R.styleable.SmartMaterialSpinner_smsp_arrowPaddingRight, getResources().getDimensionPixelSize(R.dimen.smsp_default_arrow_padding_right));
460462
arrowPaddingBottom = typedArray.getDimensionPixelSize(R.styleable.SmartMaterialSpinner_smsp_arrowPaddingBottom, 0);
@@ -539,7 +541,7 @@ private float pxToDp(float px) {
539541

540542
private boolean needScrollingAnimation() {
541543
if (errorText != null) {
542-
float screenWidth = getWidth() - rightLeftSpinnerPadding;
544+
float screenWidth = getWidth() - leftRightSpinnerPadding;
543545
float errorTextWidth = errorTextPaint.measureText(errorText.toString(), 0, errorText.length());
544546
return errorTextWidth > screenWidth;
545547
}
@@ -610,8 +612,8 @@ private AppCompatActivity scanForActivity(Context context) {
610612
@Override
611613
protected void onDraw(Canvas canvas) {
612614
super.onDraw(canvas);
613-
int startX = 0;
614-
int endX = getWidth();
615+
int startX = leftRightSpinnerPadding;
616+
int endX = getWidth() - leftRightSpinnerPadding;
615617
int lineHeight = dpToPx(underlineSize);
616618

617619
if (getHeight() != 0 && !dropdownHeightUpdated) {
@@ -633,7 +635,7 @@ protected void onDraw(Canvas canvas) {
633635
prepareBottomPadding();
634636
}
635637
canvas.save();
636-
canvas.translate(startX + rightLeftSpinnerPadding - errorLabelPosX, startYErrorLabel - dpToPx(4));
638+
canvas.translate(startX - errorLabelPosX, startYErrorLabel - dpToPx(4));
637639
staticLayout.draw(canvas);
638640
canvas.restore();
639641
} else {
@@ -642,11 +644,11 @@ protected void onDraw(Canvas canvas) {
642644
isErrorScrollPaddingInvoked = true;
643645
updateBottomPadding();
644646
}
645-
canvas.drawText(errorText.toString(), startX + rightLeftSpinnerPadding - errorLabelPosX, startYErrorLabel + errorTextHeight, errorTextPaint);
647+
canvas.drawText(errorText.toString(), startX - errorLabelPosX, startYErrorLabel + errorTextHeight, errorTextPaint);
646648
if (errorLabelPosX > 0) {
647649
canvas.save();
648650
canvas.translate(errorTextPaint.measureText(errorText.toString()) + getWidth() / 2F, 0);
649-
canvas.drawText(errorText.toString(), startX + rightLeftSpinnerPadding - errorLabelPosX, startYErrorLabel + errorTextHeight, errorTextPaint);
651+
canvas.drawText(errorText.toString(), startX - errorLabelPosX, startYErrorLabel + errorTextHeight, errorTextPaint);
650652
canvas.restore();
651653
}
652654
}
@@ -674,13 +676,13 @@ protected void onDraw(Canvas canvas) {
674676
floatLabelTextPaint.setTextSize(floatingLabelSize);
675677
String textToDraw = floatingLabelText != null ? floatingLabelText.toString() : hint.toString();
676678
if (isRtl) {
677-
canvas.drawText(textToDraw, getWidth() - rightLeftSpinnerPadding - floatLabelTextPaint.measureText(textToDraw), startYFloatingLabel, floatLabelTextPaint);
679+
canvas.drawText(textToDraw, getWidth() - floatLabelTextPaint.measureText(textToDraw), startYFloatingLabel, floatLabelTextPaint);
678680
} else {
679-
canvas.drawText(textToDraw, startX + rightLeftSpinnerPadding, startYFloatingLabel, floatLabelTextPaint);
681+
canvas.drawText(textToDraw, startX + getPaddingLeft(), startYFloatingLabel, floatLabelTextPaint);
680682
}
681683
}
682-
// drawSelector(canvas, (getWidth() - rightLeftSpinnerPadding - arrowPaddingRight + arrowPaddingLeft), getPaddingTop() + dpToPx(6) - arrowPaddingBottom + arrowPaddingTop);
683-
drawSelector(canvas, (getWidth() - rightLeftSpinnerPadding - arrowPaddingRight + arrowPaddingLeft), (int) (getPaddingTop() - arrowPaddingBottom + arrowPaddingTop + minContentHeight / 2F + itemSize / 2 - floatingLabelTopSpacing));
684+
// drawSelector(canvas, (getWidth() - leftRightSpinnerPadding - arrowPaddingRight + arrowPaddingLeft), getPaddingTop() + dpToPx(6) - arrowPaddingBottom + arrowPaddingTop);
685+
drawSelector(canvas, (getWidth() - leftRightSpinnerPadding - arrowPaddingRight + arrowPaddingLeft), (int) (getPaddingTop() - arrowPaddingBottom + arrowPaddingTop + minContentHeight / 2F + itemSize / 2 - floatingLabelTopSpacing));
684686
}
685687

686688
private void drawSelector(Canvas canvas, int posX, int posY) {
@@ -1194,7 +1196,7 @@ public boolean isAlignLabel() {
11941196

11951197
public void setAlignLabel(boolean alignLabel) {
11961198
this.alignLabel = alignLabel;
1197-
rightLeftSpinnerPadding = alignLabel ? getResources().getDimensionPixelSize(R.dimen.smsp_right_left_spinner_padding) : 0;
1199+
leftRightSpinnerPadding = alignLabel ? getResources().getDimensionPixelSize(R.dimen.smsp_left_right_spinner_padding) : 0;
11981200
invalidate();
11991201
}
12001202

@@ -1610,6 +1612,15 @@ public void setArrowPadding(int left, int top, int right, int bottom) {
16101612
invalidate();
16111613
}
16121614

1615+
public int getLeftRightSpinnerPadding() {
1616+
return leftRightSpinnerPadding;
1617+
}
1618+
1619+
public void setLeftRightSpinnerPadding(int leftRightSpinnerPadding) {
1620+
this.leftRightSpinnerPadding = dpToPx(leftRightSpinnerPadding);
1621+
invalidate();
1622+
}
1623+
16131624
public void setOnEmptySpinnerClickListener(OnEmptySpinnerClickListener onEmptySpinnerClickListener) {
16141625
this.onEmptySpinnerClickListener = onEmptySpinnerClickListener;
16151626
}
@@ -1775,7 +1786,7 @@ private View buildView(int position, View convertView, ViewGroup parent, boolean
17751786
return getItemView(convertView, parent, isDropDownView);
17761787
} else {
17771788
TextView textView = (TextView) getItemView(convertView, parent, isDropDownView);
1778-
// textView.setHeight(0);
1789+
//textView.setHeight(0);
17791790
textView.setText(getResources().getString(R.string.select_item));
17801791
return textView;
17811792
}
@@ -1830,7 +1841,7 @@ private void updateSpinnerItemStyle(ViewGroup parent, TextView textView, boolean
18301841
} else {
18311842
textView.setTextColor(SmartMaterialSpinner.this.isEnabled() ? hintColor : disabledColor);
18321843
measureItemText(textView.getText().toString());
1833-
textView.setPadding(textView.getPaddingLeft(), textView.getPaddingTop(), (int) (arrowPaddingRight + itemTextHeight), textView.getPaddingBottom());
1844+
textView.setPadding(textView.getPaddingLeft() + leftRightSpinnerPadding, textView.getPaddingTop(), (int) (arrowPaddingRight + itemTextHeight), textView.getPaddingBottom());
18341845
}
18351846
} else {
18361847
if (isDropDownView) {
@@ -1844,7 +1855,7 @@ private void updateSpinnerItemStyle(ViewGroup parent, TextView textView, boolean
18441855
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, itemSize);
18451856
textView.setTextColor(itemColor);
18461857
measureItemText(textView.getText().toString());
1847-
textView.setPadding(textView.getPaddingLeft(), textView.getPaddingTop(), (int) (arrowPaddingRight + itemTextHeight), textView.getPaddingBottom());
1858+
textView.setPadding(textView.getPaddingLeft() + leftRightSpinnerPadding, textView.getPaddingTop(), (int) (arrowPaddingRight + itemTextHeight), textView.getPaddingBottom());
18481859
}
18491860
}
18501861
}

smartmaterialspinner/src/main/res/values/attrs.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
<attr name="smsp_arrowPaddingTop" format="dimension" />
5050
<attr name="smsp_arrowPaddingRight" format="dimension" />
5151
<attr name="smsp_arrowPaddingBottom" format="dimension" />
52+
<attr name="smsp_paddingLeftRight" format="dimension" />
5253

5354
<attr name="smsp_underlineSize" format="dimension" />
5455
<attr name="smsp_underlineColor" format="color|reference" />

smartmaterialspinner/src/main/res/values/colors.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<resources>
33
<color name="smsp_base_color">#000000</color>
4-
<color name="smsp_underline_color">#4851504e</color>
4+
<color name="smsp_underline_color">#5C131212</color>
55
<color name="smsp_highlight_color">#4E61CC</color>
66
<color name="smsp_default_text_color">#4e4b4b</color>
77
<color name="smsp_disabled_color">#808080</color>

smartmaterialspinner/src/main/res/values/dimens.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44
<dimen name="smsp_floating_label_top_spacing">6dp</dimen>
55
<dimen name="smsp_floating_label_bottom_spacing">5dp</dimen>
66

7-
<dimen name="smsp_right_left_spinner_padding">0dp</dimen>
7+
<dimen name="smsp_left_right_spinner_padding">4dp</dimen>
88
<dimen name="smsp_min_content_height">6dp</dimen>
99

1010
<dimen name="smsp_underline_top_spacing">8dp</dimen>
11+
<dimen name="smsp_underline_size">0.5dp</dimen>
1112
<dimen name="smsp_error_text_padding_top">5dp</dimen>
1213
<dimen name="smsp_error_text_padding_bottom">5dp</dimen>
1314
<dimen name="smsp_error_text_padding_top_bottom">0dp</dimen>
@@ -17,6 +18,7 @@
1718
<dimen name="smsp_default_hint_size">14sp</dimen>
1819
<dimen name="smsp_default_floating_label_size">12sp</dimen>
1920
<dimen name="smsp_default_error_text_size">13sp</dimen>
21+
<dimen name="smsp_default_arrow_padding_left">14dp</dimen>
2022
<dimen name="smsp_default_arrow_padding_right">19dp</dimen>
2123

2224
</resources>

0 commit comments

Comments
 (0)