This is a step by step guide on how you can create an ActionBar for your awesome Android app.
DOWNLOAD SOURCE CODE
1. Create new project.
Go to File > New > Android Application Project2. Add three icons to the project's res/drawable-hdpi/ directory
You can download the Android design icon pack.
3. Modify res/menu/main.xml and add three ActionBar items.
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/refresh" android:icon="@drawable/ic_action_refresh" android:orderInCategory="100" android:showAsAction="always" android:title="Refresh"/> <item android:id="@+id/copyLink" android:icon="@drawable/ic_action_copy" android:orderInCategory="100" android:showAsAction="collapseActionView" android:title="Copy Link"/> <item android:id="@+id/share" android:icon="@drawable/ic_action_share" android:orderInCategory="100" android:showAsAction="always" android:title="Share"/> </menu>
4. Create the onOptionsItemSelected() method
This is inside MainActity.java// handle click events for action bar items @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.refresh: showToast("Refresh was clicked."); return true; case R.id.copyLink: showToast("Copy link was clicked."); return true; case R.id.share: showToast("Share was clicked."); return true; default: return super.onOptionsItemSelected(item); } }
5. Create the showToast() for each case
This is inside MainActity.java// so that we know something was triggered public void showToast(String msg){ Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); }
6. Create getOverflowMenu()
This is inside MainActity.java// put the other two menu on the three dots (overflow) private void getOverflowMenu() { try { ViewConfiguration config = ViewConfiguration.get(this); java.lang.reflect.Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); if(menuKeyField != null) { menuKeyField.setAccessible(true); menuKeyField.setBoolean(config, false); } } catch (Exception e) { e.printStackTrace(); } }
Call it from onCreate() to show unshown actions as three dots
getOverflowMenu();
Final Code
MainActivity.javapackage com.example.actionbarexample; import com.example.actoinbarexample.R; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.MenuItem; import android.view.ViewConfiguration; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getOverflowMenu(); } // inflate for action bar @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } // handle click events for action bar items @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.refresh: showToast("Refresh was clicked."); return true; case R.id.copyLink: showToast("Copy link was clicked."); return true; case R.id.share: showToast("Share was clicked."); return true; default: return super.onOptionsItemSelected(item); } } // put the other two menu on the three dots (overflow) private void getOverflowMenu() { try { ViewConfiguration config = ViewConfiguration.get(this); java.lang.reflect.Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); if(menuKeyField != null) { menuKeyField.setAccessible(true); menuKeyField.setBoolean(config, false); } } catch (Exception e) { e.printStackTrace(); } } // so that we know something was triggered public void showToast(String msg){ Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); } }
Lower Android (2.2+) Version Compatibility
Android ActionBar only works for Honeycomb and Up. To make it work with pre-honeycome devices, you should use the Android support library. Download it first using your SDK manager and then follow the step by step guide here.
More about the ActionBar:
The Code of a Ninja Resources
For FREE programming tutorials, click the red button below and subscribe! :)
website