chesca
chesca

Reputation: 56

How to show drop down menu when button in actionbar clicked in Android

I have two buttons in my actionbar namely: logout and edit profile. When I clicked edit profile, I want to show drop down menu but I don't know how. Please help. Thanks in advance!

public boolean onOptionsItemSelected(MenuItem item)
{
    switch(item.getItemId())
    {
        case R.id.action_logout:
            AlertDialog.Builder builder=new AlertDialog.Builder(AdminHome.this);
            builder.setMessage("Are you sure you want to logout?")
            .setPositiveButton("Logout", new DialogInterface.OnClickListener() 
            {
                @Override
                public void onClick(DialogInterface dialog, int which) 
                {
                    new Logs().execute();
                    finish();
                    Intent in=new Intent(AdminHome.this, MainActivity.class);
                    startActivity(in);
                }
            })
            .setNegativeButton("Cancel", new DialogInterface.OnClickListener() 
            {
                @Override
                public void onClick(DialogInterface dialog, int which) 
                {

                }
            })
            .show();
            return true;

        case R.id.edituser:

            //WHAT TO PUT IN HERE
            return true;
    }

    return super.onOptionsItemSelected(item);

}

Upvotes: 0

Views: 3208

Answers (3)

kevz
kevz

Reputation: 2737

below is sample menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<item
    android:id="@+id/action_logout" 
    android:icon="@drawable/logout"
    android:title="Logout"
    app:showAsAction="always"
    android:orderInCategory="1" />

<item
    android:id="@+id/action_edtprofile"
    android:icon="@drawable/edtProfile"
    android:title="Edit Profile"
    app:showAsAction="always"
    android:orderInCategory="0">

    <menu>
        <group>

            <item 
                 android:id="@+id/action_dropdown_item1"
                 android:title="dropdown_item1" />

            <item 
                 android:id="@+id/action_dropdown_item2"
                 android:title="dropdown_item2" />

            <item 
                 android:id="@+id/action_dropdown_item3"
                 android:title="dropdown_item3" />

        </group>
    </menu>

</item>

onClick of Edit Profile a dropdon will appear with Sub-Menus and using the id u can perform the action.

Upvotes: 0

Kapil Rajput
Kapil Rajput

Reputation: 11565

Do it in this way , your menu xml should be like this the items you want to show on Actionbar or toolbar should be placed in parent menu tag and child menu items (which will be shown in drop down menu when when edituser is tapped) should be placed in another menu tag:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

 <item android:id="@+id/action_logout"
      android:icon="@drawable/action_logout"
      android:title="@string/action_logout"
      android:showAsAction="always" > 

<item android:id="@+id/edituser"
      android:icon="@drawable/edituser"
      android:title="@string/edituser"
      android:showAsAction="always" >
 <menu>
 <item android:id="@+id/item1"
      android:icon="@drawable/ic_launcher"
      android:title="@string/item1"
      android:showAsAction="never"
      />

<item android:id="@+id/item2"
      android:icon="@drawable/ic_launcher"
      android:title="@string/item2" 
      android:showAsAction="never" />


<item android:id="@+id/item3"
      android:icon="@drawable/ic_launcher"
      android:title="@string/item3" 
      android:showAsAction="never"/>


<item android:id="@+id/item4"
      android:icon="@drawable/ic_launcher"
      android:title="@string/item4"
      android:showAsAction="never" />

 </menu>
      </item>
 </menu>

I hope i am clear in my answer. Hope it will help you.

Upvotes: 0

Anjali Tripathi
Anjali Tripathi

Reputation: 1477

Simply create your Menu Item and apply click on it

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
       android:id="@+id/menu_item_action_parameters"
       android:title="@string/text_parameters"
       android:icon="@drawable/ic_menu_parameter"
       app:showAsAction="ifRoom|withText"/> >
       <menu>
          <item 
            android:id="@+id/action_dropdown1"
            android:title="@string/dropdown_1" />
          <item 
            android:id="@+id/action_dropdown2"
            android:title="@string/dropdown2" />
          <item 
            android:id="@+id/action_dropdown3"
            android:title="@string/dropdown3" />
        </menu>
    </item>

    <item
      more item
    </item>
</menu>

For nore deatil refer this link Android Show DropDown Menu on MenuItem click

public void showPopup(int itemId){
        View view = findViewById(itemId);
        PopupMenu popupMenu = new PopupMenu(getSupportActionBar().getThemedContext(), view);
        popupMenu.setOnMenuItemClickListener(/* drop_down item click listener */);
        popupMenu.getMenuInflater().inflate(R.menu.drop_down_menu, popupMenu.getMenu());
        popupMenu.show();
    }

Upvotes: 1

Related Questions