String Constant
Lets have Array of string constant which will be set to spinner
file : string.xml
<resources>
<string name="app_name">SpinnerToolbar</string>
<string name="action_settings">Settings</string>
<!-- Category -->
<string-array name="category">
<item>Top News</item>
<item>Business</item>
<item>Politics</item>
<item>Sports</item>
<item>Technology</item>
<item>Movies</item>
</string-array>
</resources>
<string name="app_name">SpinnerToolbar</string>
<string name="action_settings">Settings</string>
<!-- Category -->
<string-array name="category">
<item>Top News</item>
<item>Business</item>
<item>Politics</item>
<item>Sports</item>
<item>Technology</item>
<item>Movies</item>
</string-array>
</resources>
XML Layout
Create a layout/activity_main.xml file which contains Toolbar widget.
file : activity_main.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize" />
</LinearLayout>
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize" />
</LinearLayout>
create a spinner_dropdown_item.xml which contains TextView which represents view for each items of spinner .
file : spinner_dropdown_item.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:gravity="center_vertical"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:textAppearance="?android:attr/textAppearanceListItemSmall" />
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:gravity="center_vertical"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:textAppearance="?android:attr/textAppearanceListItemSmall" />
MainActivity
Create a class MainActivity which extends AppCompatActivity , now inside onCreate() add spinner to toolbar dyanamically and also set onItemSelectListener.
file : MainActivity.java
package com.tutorialsbuzz.spinnertoolbar;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private Toolbar toolbar=null;
private String[] category=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
category = getResources().getStringArray(R.array.category);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
toolbar.setLogo(R.drawable.ic_drawer);
SpinnerAdapter spinnerAdapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.category, R.layout.spinner_dropdown_item);
Spinner navigationSpinner = new Spinner(getSupportActionBar().getThemedContext());
navigationSpinner.setAdapter(spinnerAdapter);
toolbar.addView(navigationSpinner, 0);
navigationSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this,
"you selected: " + category[position],
Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private Toolbar toolbar=null;
private String[] category=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
category = getResources().getStringArray(R.array.category);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
toolbar.setLogo(R.drawable.ic_drawer);
SpinnerAdapter spinnerAdapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.category, R.layout.spinner_dropdown_item);
Spinner navigationSpinner = new Spinner(getSupportActionBar().getThemedContext());
navigationSpinner.setAdapter(spinnerAdapter);
toolbar.addView(navigationSpinner, 0);
navigationSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this,
"you selected: " + category[position],
Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
7 comments:
Hi tutorialbuzz i appreciate all the tutorials you have been posting and am following it, is it possible for you to make a tutorial on inset search box in toolbar and make it to search for list of html/text file in the app and displayed in another activity
I will appreciate if you can do this
Thanks
As I do for any activity or fragment habrir ?
Yes you can open activity or fragment , inside onItemSelected method , you can create intent and startActivity or if you are using fragment then do fragment transction
Sure will try
Hi Pawan, I have a Android studio's Navigational drawer theme, the toolbar has a spinner, and I have a listview in main fragment (first fragment when the app loads).
I want to filter the ListView based on the item selected from the spinner. How can i achieve this. Please Help.
thank you!
Thanks for all the tutorials. They are very helpful. A question: Can a spinner be put in a dialog fragment? Thanks for your help.
Post a Comment