且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Android Show DropDown菜单在MenuItem上单击

更新时间:2023-12-06 14:31:11

创建您的菜单xml如下



 < 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/> &GT;
< 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
更多项
< / item>
< / menu>

然后

  @Override 
public boolean onOptionsItemSelected(MenuItem item){
int id = item.getItemId();
switch(id){
case R.id.action_dropdown1:
...
return true;

case R.id.action_dropdown2:
...
return true;
...

默认值:
返回super.onOptionsItemSelected(item);
}
}


I want to show DropDown menu on MenuItem click just like this.

Like this

Note that this item was added like:

<item
    android:id="@+id/menu_item_action_parameters"
    android:title="@string/text_parameters"
    android:icon="@drawable/ic_menu_parameter"
    app:showAsAction="ifRoom|withText"/>
</item>

And in my code:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    switch (id) {
        case R.id.menu_item_action_parameters:
            // What to do here?
            break;
    }
    return super.onOptionsItemSelected(item);
 }

I have seen this link but I have came to know that ActionBar.setListNavigationCallbacks() has been deprecated.

Thanks!

Create your menu xml as follow

 <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>

Then

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    switch (id) {
        case R.id.action_dropdown1:
            ...
            return true;

        case R.id.action_dropdown2:
            ...
            return true;
        ...

        default:
            return super.onOptionsItemSelected(item);
     }
 }