Spinners provide a quick way to select one value from a list of values. In the default state, a spinner shows its currently selected value. Touching the spinner displays a dropdown menu with all other available values, from which the user can select a new one.
Here we will create a simple app which displays a Spinner and a TextView. The spinner displays a list of numbers, which can be used to set the size of the TextView when the spinner item is selected.
Step 1: Create a new project with name SpinnerSample and package name com.mysample.spinner. Fill the forms and click “Finish” button.
Step 2: Open res -> layout -> xml (or) main.xml and add codes for displaying a Spinner spinner1, and a TextView mainTextView1.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <LinearLayout android:layout_height="wrap_content" android:layout_width="match_parent" android:orientation="horizontal"> <TextView android:text="Select Text Size" android:layout_width="wrap_content" android:layout_height="match_parent" android:textSize="18sp" android:textColor="#000000" android:padding="8dp" android:layout_weight="1.0"/> <Spinner android:layout_width="140dp" android:layout_height="wrap_content" android:id="@+id/spinner1"/> </LinearLayout> <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Large Text" android:layout_margin="10dp" android:id="@+id/mainTextView1"/> </LinearLayout>
Step 4: Open app -> java -> package and open MainActivity.java. Add following code in it. Here when spinner item is selected, we set convert it to an Integer and set it as the size of TextView, and display it in the text of TextView.
package com.mysample.spinner; import android.app.*; import android.os.*; import android.widget.*; import android.view.*; public class MainActivity extends Activity { // Declare a Spinner and a TextView private Spinner spinner1; private TextView textview1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // Find the Spinner and TextView from their IDs in main.xml spinner1 = findViewById(R.id.spinner1); textview1 = findViewById(R.id.mainTextView1); // Create a list of text sizes final String[] textsizes = {"10", "20", "30", "40", "50"}; // Define an ArrayAdapter and set it as adapter of spinner ArrayAdapter<String> myadapter = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_spinner_dropdown_item, textsizes); spinner1.setAdapter(myadapter); // Refresh Spinner data ((ArrayAdapter)spinner1.getAdapter()).notifyDataSetChanged(); // Set OnItemSelectedListener for the Spinner spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){ // When a spinner item is selected @Override public void onItemSelected(AdapterView<?> adapter_view, View view, int position, long p){ textview1.setTextSize(Integer.valueOf(textsizes[position])); textview1.setText("Now the text size is " + textsizes[position]); } // When nothing is selected @Override public void onNothingSelected(AdapterView<?> p1){ } }); } }
Output:
Now run the app. The spinner displays a list of numbers, and when any spinner item is selected, the selected number is set as the size of the TextView.