JRSpinner
Custom spinner that inspired by instagram language chooser.
What's new
What's new in version 0.2.4
1. Add check icon in selected item
2. Add reset function to reset JRSpinner selected item
3. Bug fixing to support backward compatibility
Gradle install
Make sure there is jcenter
repository in your project level build.gradle
allprojects {
repositories {
..
jcenter()
}
}
Implement the dependency to your app-level build.gradle
dependencies {
..
implementation 'jrizani:jrspinner:$version'
}
How to use
Declare the view in your layout
<jrizani.jrspinner.JRSpinner
android:id="@+id/spn_my_spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/choose"
android:textColor="@color/colorPrimary"
app:backgroundTint="@color/colorPrimary"
app:jrs_title="Choose"
app:jrs_icon_tint="@color/colorPrimary"/>
Attribute
Attribute | Description | Default Value |
---|---|---|
android:hint | hint of spinner | nothing |
android:textColor | color of text | default text color |
app:backgroundTint | tint of spinner, in default it is change underline color of spinner | default edittext background tint |
android:background | if you want your own background of spinner, you can use it | default edittext background |
app:jrs_title | there is the title of the spinner dialog | "Choose" |
app:jrs_icon_tint | color tint of expand icon | #99000000 |
You also can set the parameter programmatically
private JRSpinner mySpinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mySpinner = findViewById(R.id.spn_my_spinner);
mySpinner.setItems(getResources().getStringArray(R.array.tesItems)); //this is important, you must set it to set the item list
mySpinner.setTitle("Choose item programmatically"); //change title of spinner-dialog programmatically
mySpinner.setExpandTint(R.color.color_default); //change expand icon tint programmatically
mySpinner.setOnItemClickListener(new JRSpinner.OnItemClickListener() { //set it if you want the callback
@Override
public void onItemClick(int position) {
//do what you want to the selected position
}
});
}
Additional
If you want the spinner has a floating label, you can wrap this spinner in Text input layout:
android.support.design.widget.TextInputLayout
or com.google.android.material.textfield.TextInputLayout
if you use androidx artifact
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/til"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:hintEnabled="true">
<jrizani.jrspinner.JRSpinner
android:id="@+id/spn_my_spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/my_hint"
android:textColor="@color/colorPrimary"
app:backgroundTint="@color/colorPrimary"
app:jrs_title="Choose"
app:jrs_icon_tint="@color/colorPrimary"/>
</com.google.android.material.textfield.TextInputLayout>
Example
You can found the example code here
.
There is the sample gif