In this article we will learn to create an application which add action items and menu items to action bar.

When we use ActionBar in the application , few important points are to be remember as follows:

  1. Extend ActionBarActivity or AppCompatActivity instead of Activity,

    public class MainActivity extends ActionBarActivity{
    or
    public class MainActivity extends AppCompatActivity {

  2. Select the right title for showAsAction for instance : “always”, “ifRoom”
    1. <menu xmlns:android="http://schemas.android.com/apk/res/android" Xmlns:app="http://schemas.android.com/apk/res-auto">
    2. <item android:id="@+id/action_user" android:icon="@drawable/ic_action_user" android:title="@string/action_user" app:showAsAction="ifRoom" /> ...
    3. </menu>
  3. Define your Menu in Activity,
    1. @Override
    2. public boolean onCreateOptionsMenu(Menu menu)
    3. {
    4. // Inflate the menu; this adds items to the action bar if it is present.
    5. getMenuInflater().inflate(R.menu.menu_main, menu);
    6. return true;
    7. }
    8. @Override
    9. public boolean onOptionsItemSelected(MenuItem item)
    10. {
    11. // Handle action bar item clicks here. The action bar will
    12. // automatically handle clicks on the Home/Up button, so long
    13. // as you specify a parent activity in AndroidManifest.xml.
    14. switch (item.getItemId())
    15. {
    16. case R.id.action_user:
    17. Toast toast0 = Toast.makeText(getApplicationContext(), "User Profile", Toast.LENGTH_SHORT);
    18. toast0.show();
    19. return true;
    20. case R.id.search:
    21. Toast toast00 = Toast.makeText(getApplicationContext(), "Search", Toast.LENGTH_SHORT);
    22. toast00.show();
    23. return true;
    24. case R.id.action_settings:
    25. Toast toast = Toast.makeText(getApplicationContext(), "Action Settings", Toast.LENGTH_SHORT);
    26. toast.show();
    27. return true;
    28. case R.id.help_center:
    29. Toast toast1 = Toast.makeText(getApplicationContext(), "Help Center", Toast.LENGTH_SHORT);
    30. toast1.show();
    31. return true;
    32. case R.id.Rating:
    33. Toast toast3 = Toast.makeText(getApplicationContext(), "Rating", Toast.LENGTH_SHORT);
    34. toast3.show();
    35. return true;
    36. case R.id.More:
    37. Toast toast2 = Toast.makeText(getApplicationContext(), "More", Toast.LENGTH_SHORT);
    38. toast2.show();
    39. return true;
    40. default:
    41. return super.onOptionsItemSelected(item);
    42. }
    43. }

main_menu.xml

  1. <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
  2. <item android:id="@+id/action_user" android:icon="@drawable/ic_user" android:title="Profile" app:showAsAction="ifRoom">
  3. </item>
  4. <item android:id="@+id/search" android:icon="@drawable/ic_search" android:title="Search" app:showAsAction="ifRoom">
  5. </item>
  6. <item android:id="@+id/action_settings" android:title="@string/action_settings" />
  7. <item android:id="@+id/help_center" android:title="Help Center">
  8. </item>
  9. <item android:id="@+id/Rating" android:title="Rate the App">
  10. </item>
  11. <item android:id="@+id/More" android:title="More">
  12. </item>
  13. </menu>
Note:

app:showAsAction="always"

It will force them to be there but take in consideration what is happening if it's still not enough room.

When contained within the action bar there is a finite maximum of action items based on the device's density-independent width. The action items can also not cover more than half the width of the action bar.

Source Code:

MainActivity.java
  1. package com.example.abhijeet.menuoptionsdemo;
  2. import android.app.Dialog;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.support.design.widget.FloatingActionButton;
  6. import android.support.design.widget.Snackbar;
  7. import android.support.v7.app.AppCompatActivity;
  8. import android.support.v7.widget.Toolbar;
  9. import android.view.Gravity;
  10. import android.view.View;
  11. import android.view.Menu;
  12. import android.view.MenuItem;
  13. import android.widget.Button;
  14. import android.widget.EditText;
  15. import android.widget.Toast;
  16. public class MainActivity extends AppCompatActivity
  17. {
  18. @Override
  19. protected void onCreate(Bundle savedInstanceState)
  20. {
  21. super.onCreate(savedInstanceState);
  22. setContentView(R.layout.activity_main);
  23. Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
  24. setSupportActionBar(toolbar);
  25. FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
  26. fab.setOnClickListener(new View.OnClickListener()
  27. {
  28. @Override
  29. public void onClick(View view)
  30. {
  31. Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG).setAction("Action", null).show();
  32. }
  33. });
  34. }
  35. @Override
  36. public boolean onCreateOptionsMenu(Menu menu)
  37. {
  38. // Inflate the menu; this adds items to the action bar if it is present.
  39. getMenuInflater().inflate(R.menu.menu_main, menu);
  40. return true;
  41. }
  42. @Override
  43. public boolean onOptionsItemSelected(MenuItem item)
  44. {
  45. // Handle action bar item clicks here. The action bar will
  46. // automatically handle clicks on the Home/Up button, so long
  47. // as you specify a parent activity in AndroidManifest.xml.
  48. switch (item.getItemId())
  49. {
  50. case R.id.action_user:
  51. Toast toast0 = Toast.makeText(getApplicationContext(), "User Profile", Toast.LENGTH_SHORT);
  52. toast0.show();
  53. return true;
  54. case R.id.search:
  55. Toast toast00 = Toast.makeText(getApplicationContext(), "Search", Toast.LENGTH_SHORT);
  56. toast00.show();
  57. return true;
  58. case R.id.action_settings:
  59. Toast toast = Toast.makeText(getApplicationContext(), "Action Settings", Toast.LENGTH_SHORT);
  60. toast.show();
  61. return true;
  62. case R.id.help_center:
  63. Toast toast1 = Toast.makeText(getApplicationContext(), "Help Center", Toast.LENGTH_SHORT);
  64. toast1.show();
  65. return true;
  66. case R.id.Rating:
  67. Toast toast3 = Toast.makeText(getApplicationContext(), "Rating", Toast.LENGTH_SHORT);
  68. toast3.show();
  69. return true;
  70. case R.id.More:
  71. Toast toast2 = Toast.makeText(getApplicationContext(), "More", Toast.LENGTH_SHORT);
  72. toast2.show();
  73. return true;
  74. default:
  75. return super.onOptionsItemSelected(item);
  76. }
  77. }
  78. }
menu_main.xml
  1. <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
  2. <item android:id="@+id/action_user" android:icon="@drawable/ic_user" android:title="Profile" app:showAsAction="ifRoom">
  3. </item>
  4. <item android:id="@+id/search" android:icon="@drawable/ic_search" android:title="Search" app:showAsAction="ifRoom">
  5. </item>
  6. <item android:id="@+id/action_settings" android:title="@string/action_settings" />
  7. <item android:id="@+id/help_center" android:title="Help Center">
  8. </item>
  9. <item android:id="@+id/Rating" android:title="Rate the App">
  10. </item>
  11. <item android:id="@+id/More" android:title="More">
  12. </item>
  13. </menu>
Output:

output

output