diff --git a/AwesomeSpinner/build.gradle b/AwesomeSpinner/build.gradle index 1b128dd..112fdde 100644 --- a/AwesomeSpinner/build.gradle +++ b/AwesomeSpinner/build.gradle @@ -7,8 +7,8 @@ android { defaultConfig { minSdkVersion 14 targetSdkVersion 25 - versionCode 1 - versionName "1.1.0" + versionCode 12 + versionName "1.2.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" diff --git a/AwesomeSpinner/src/main/java/com/isapanah/awesomespinner/AwesomeSpinner.java b/AwesomeSpinner/src/main/java/com/isapanah/awesomespinner/AwesomeSpinner.java index 45f2c91..3bb4b36 100644 --- a/AwesomeSpinner/src/main/java/com/isapanah/awesomespinner/AwesomeSpinner.java +++ b/AwesomeSpinner/src/main/java/com/isapanah/awesomespinner/AwesomeSpinner.java @@ -1,20 +1,19 @@ package com.isapanah.awesomespinner; import android.content.Context; +import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Color; +import android.graphics.PorterDuff; import android.support.v7.widget.AppCompatButton; -import android.support.v7.widget.AppCompatSpinner; import android.util.AttributeSet; import android.util.Log; import android.view.Gravity; import android.view.View; -import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.RelativeLayout; -import android.widget.TextView; /** * Created by sadra on 5/26/17. @@ -33,6 +32,11 @@ public class AwesomeSpinner extends RelativeLayout { private boolean _isItemResourceDeclared = false; private int _spinnerType = 0; private boolean _isSelected; + private final int HINT_BUTTON_NOT_SELECTED_COLOR = Color.parseColor("#aaaaaa"); + private final int HINT_BUTTON_DISABLED_COLOR = Color.parseColor("#BDBDBD"); + private int HINT_BUTTON_COLOR = Color.BLACK; + private final int DOWN_ARROW_DEFAULT_TINT_COLOR = Color.parseColor("#797979"); + private int DOWN_ARROW_TINT_COLOR = Color.parseColor("#797979"); public AwesomeSpinner (Context context) { super(context); @@ -63,7 +67,7 @@ private void init(AttributeSet attrs) { private void setSpinnerStyle(TypedArray typedArray){ - _hintButton.setText(typedArray.getString(R.styleable.AwesomeSpinnerStyle_spinnerHint)); + setHintButtonText(typedArray.getString(R.styleable.AwesomeSpinnerStyle_spinnerHint)); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); params.setMargins(10,40,10,10); @@ -118,8 +122,7 @@ public void onItemSelected(AdapterView parent, View view, int position, long _isSelected = true; Object item = AwesomeSpinner.this._spinner.getItemAtPosition(position); AwesomeSpinner.this._callback.onItemSelected(position, (String) item); - _hintButton.setText(_spinner.getSelectedItem().toString()); - setHitButtonStyle(); + setHintButtonText(_spinner.getSelectedItem().toString()); } _allowToSelect = true; @@ -152,8 +155,7 @@ public void onItemSelected(AdapterView parent, View view, int position, long _isSelected = true; Object item = AwesomeSpinner.this._spinner.getItemAtPosition(position); AwesomeSpinner.this._callback.onItemSelected(position, (String) item); - _hintButton.setText(_spinner.getSelectedItem().toString()); - setHitButtonStyle(); + setHintButtonText(_spinner.getSelectedItem().toString()); } _allowToSelect = true; @@ -239,7 +241,7 @@ public interface onSpinnerItemClickListener { public void setSpinnerEnable(boolean enable){ this._spinner.setEnabled(enable); this._hintButton.setEnabled(enable); - this._downArrow.setAlpha(enable ? 1.0f : 0.6f); + setDownArrowStyle(); setHitButtonStyle(); } @@ -248,7 +250,34 @@ public boolean isSpinnerEnable(){ } private void setHitButtonStyle(){ - this._hintButton.setTextColor(this._hintButton.isEnabled() ? Color.BLACK : Color.parseColor("#BDBDBD")); + this._hintButton.setTextColor( + this._hintButton.isEnabled() ? + (isSelected() ? HINT_BUTTON_COLOR : HINT_BUTTON_NOT_SELECTED_COLOR) + : + HINT_BUTTON_DISABLED_COLOR + ); + } + + public void setSelectedItemHintColor(int color){ + this.HINT_BUTTON_COLOR = color; + this._hintButton.setTextColor(isSelected() ? this.HINT_BUTTON_COLOR : this.HINT_BUTTON_NOT_SELECTED_COLOR); + } + + private void setHintButtonText(String label){ + _hintButton.setText(label); + setHitButtonStyle(); + } + + private void setDownArrowStyle(){ + this._downArrow.setColorFilter( + this._hintButton.isEnabled() ? this.DOWN_ARROW_TINT_COLOR : this.DOWN_ARROW_DEFAULT_TINT_COLOR, + PorterDuff.Mode.SRC_ATOP); + this._downArrow.setAlpha(this._hintButton.isEnabled() ? 1.0f : 0.6f); + } + + public void setDownArrowTintColor(int color){ + this.DOWN_ARROW_TINT_COLOR = color; + setDownArrowStyle(); } } diff --git a/AwesomeSpinner/src/main/res/drawable/ic_arrow_drop_down.xml b/AwesomeSpinner/src/main/res/drawable/ic_arrow_drop_down.xml new file mode 100644 index 0000000..230e0cb --- /dev/null +++ b/AwesomeSpinner/src/main/res/drawable/ic_arrow_drop_down.xml @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/AwesomeSpinner/src/main/res/layout/spinner_view.xml b/AwesomeSpinner/src/main/res/layout/spinner_view.xml index dd5dc41..50d6a1d 100644 --- a/AwesomeSpinner/src/main/res/layout/spinner_view.xml +++ b/AwesomeSpinner/src/main/res/layout/spinner_view.xml @@ -23,7 +23,7 @@ provincesAdapter = ArrayAdapter.createFromResource(this, R.array.iran_provinces, android.R.layout.simple_spinner_item); spinnerRTL.setAdapter(provincesAdapter, 0);