Skip to content

TurtleTower/SmartMaterialSpinner

 
 

Repository files navigation

SmartMaterialSpinner

Download

The best Android spinner library for your android application with more customization

Available on Play Store

Play Store

Available features

Spinner mode

  • Dropdown mode ( android:spinnerMode="dropdown" ). By default it is dropdown mode
  • Dialog mode ( android:spinnerMode="dialog" )
  • Searchable mode ( app:smsp_isSearchable="true" )

Searchable spinner

  • smsp_isSearchable : Default is false. Set it to true to enable this feature.
  • smsp_enableSearchHeader: Default is true. Set it to false to hide search header.
  • smsp_searchHeaderText: Text display as header text
  • smsp_searchHeaderTextColor: For changing header text color
  • smsp_searchHeaderBackgroundColor: For changing header background color
  • smsp_searchHint: To set query text hint
  • smsp_searchHintColor: To set hint color to query search text
  • smsp_searchTextColor: To set color to query search text

Spinner item

  • smsp_itemSize: To set spinner item size
  • smsp_itemColor: To set spinner item color

Hint Label

  • smsp_hint: To set spinner hint text
  • smsp_hintSize: To set spinner hint text size
  • smsp_hintColor: To set spinner hint color
  • smsp_itemListHintColor: To set spinner hint text color (dropdown hint)
  • smsp_itemListHintBackgroundColor: To set spinner hint background (dropdown hint)

Floating Label

  • smsp_enableFloatingLabel: Default is true. Set it to false to disable floating label.
  • smsp_alwaysShowFloatingLabel: Default is false. Set it to true for always display.
  • smsp_floatingLabelText: Update it to what text you want. If the value is not set, it get from hint.
  • smsp_floatingLabelSize: For changing floating label size
  • smsp_floatingLabelColor: For changing floating label color

Error Label

  • smsp_enableErrorLabel: Default it is true.
  • smsp_errorText: Your error message text.
  • smsp_errorTextSize: For changing error text size
  • smsp_errorTextColor: for changing error text color
  • smsp_multilineError: Default is false. Update it to show as single line or multiple line
  • smsp_errorTextAlignment: Align error text to left, center or right

Color customization to:

  • Item text color (smsp_itemColor)
  • Hint color (smsp_hintColor)
  • Floating Label color (smsp_floatingLabelColor)
  • Error Text color (smsp_errorTextColor)
  • List Item Hint color and background (smsp_itemListHintColor & smsp_itemListHintBackgroundColor)
  • List Item color (smsp_itemListColor)
  • Selected item color (smsp_selectedItemListColor)
  • Arrow or selector color (smsp_arrowColor)
  • Underline color (smsp_underlineColor)

Empty dropdown clickable

  • In case if you want to design view with empty spinner and apply click event and here it is.

Underline

  • smsp_underlineSize: To set underline size (The bottom line of spinner)
  • smsp_underlineColor: To set underline color (The bottom line of spinner)

Re-selectable feature

  • smsp_isReSelectable: Allow re-selectable for current selected item. By default it is false

RTL (Right To Left) feature

  • smsp_isRtl: To change position of view from right to left or left to right. I will update more on it.

Screenshot Demo

SmartMaterialSpinner SmartMaterialSpinner SmartMaterialSpinner
SmartMaterialSpinner SmartMaterialSpinner SmartMaterialSpinner

Usage

Add the dependencies to your gradle file:

dependencies {
    implementation 'com.github.chivorns:smartmaterialspinner:1.1.6'
}

Add SmartMaterialSpinner to your layout:

    <com.chivorn.smartmaterialspinner.SmartMaterialSpinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:smsp_errorText="This is error text. You can show it as single line or multiple lines using attr smsp_multilineError"
        app:smsp_floatingLabelColor="#1976D2"
        app:smsp_floatingLabelText="Floating Label Text"
        app:smsp_hint="Hint Text"
        app:smsp_hintColor="#388E3C"
        app:smsp_itemColor="#512DA8"
        app:smsp_itemListColor="#7C4DFF"
        app:smsp_itemListHintBackgroundColor="#808080"
        app:smsp_itemListHintColor="#FFFFFF"
        app:smsp_multilineError="false"
        app:smsp_selectedItemListColor="#FF5252" />

In Java class

public class MainActivity extends AppCompatActivity {

    private SmartMaterialSpinner spProvince;
    private SmartMaterialSpinner spEmptyItem;
    private List<String> provinceList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.smart_material_spinner_sample_layout);

        initSpinner();
    }

    private void initSpinner() {
        spProvince = findViewById(R.id.sp_provinces);
        spEmptyItem = findViewById(R.id.sp_empty_item);
        provinceList = new ArrayList<>();

        provinceList.add("Kampong Thom");
        provinceList.add("Kampong Cham");
        provinceList.add("Kampong Chhnang");
        provinceList.add("Phnom Penh");
        provinceList.add("Kandal");
        provinceList.add("Kampot");

        spProvince.setItem(provinceList);

        spProvince.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
                Toast.makeText(MainActivity.this, provinceList.get(position), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
            }
        });
    }
}

In Kotlin class

class MainActivity : AppCompatActivity() {
    private var spProvince: SmartMaterialSpinner? = null
    private var spEmptyItem: SmartMaterialSpinner? = null
    private var provinceList: MutableList<String>? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.smart_material_spinner_sample_layout)

        initSpinner()
    }

    private fun initSpinner() {
        spProvince = findViewById(R.id.sp_provinces)
        spEmptyItem = findViewById(R.id.sp_empty_item)
        provinceList = ArrayList()

        provinceList!!.add("Kampong Thom")
        provinceList!!.add("Kampong Cham")
        provinceList!!.add("Kampong Chhnang")
        provinceList!!.add("Phnom Penh")
        provinceList!!.add("Kandal")
        provinceList!!.add("Kampot")

        spProvince!!.setItem<Any>(provinceList!!)

        spProvince!!.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
            override fun onItemSelected(adapterView: AdapterView<*>, view: View, position: Int, id: Long) {
                Toast.makeText(this@MainActivity, provinceList!![position], Toast.LENGTH_SHORT).show()
            }

            override fun onNothingSelected(adapterView: AdapterView<*>) {}
        }
    }
}

About

The powerful android spinner library for your application

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 96.1%
  • Kotlin 3.9%