Spinner It is a type of dropdown input. Firstly in layout
<Spinner
android:id="@+id/spinner" <!-- id to refer this spinner from JAVA-->
android:layout_width="match_parent"
android:layout_height="wrap_content">
</Spinner>
Now Secondly populate values in spinner
There are mainly two ways to populate values in spinner
.
array
<string-array name="defaultValue">
<item>--Select City Area--</item>
<item>--Select City Area--</item>
<item>--Select City Area--</item>
</string-array>
Now add this line in sppiner XML
android:entries="@array/defaultValue"
if you are using in activity
cityArea = (Spinner) findViewById(R.id.cityArea);
else if you are using in fragment
cityArea = (Spinner) findViewById(R.id.cityArea);
Now create a arrayList
of Strings
ArrayList<String> area = new ArrayList<>();
//add values in area arrayList
cityArea.setAdapter(new ArrayAdapter<String>(context
, android.R.layout.simple_list_item_1, area));
This will look like
According to the device Android version it will render style
Following are some of the default themes
If an app does not explicitly request a theme in its manifest, Android System will determine the default theme based on the app’s targetSdkVersion to maintain the app’s original expectations:
Android SDK Version | Default Theme |
---|---|
Version < 11 | @android:style/Theme |
Version between 11 and 13 | @android:style/Theme.Holo |
14 and higher | @android:style/Theme.DeviceDefault |
Spinner
can be easily customized with the help of xml
eg
android:background="@drawable/spinner_background"
android:layout_margin="16dp"
android:padding="16dp"
Create a custom background in XML and use it.
easily get the position and other details of the selected item in spinner
cityArea.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
areaNo = position;
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
Change the text color of the selected item in spinner
This can be done in two ways in XML
<item android:state_activated="true" android:color="@color/red"/>
This will change the selected item color in the popup.
and from JAVA do this (in the setOnItemSelectedListener(...))
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
((TextView) parent.getChildAt(0)).setTextColor(0x00000000);
// similarly change `background color` etc.
}