Drop Down Menu on Action bar

后端 未结 2 1218
旧巷少年郎
旧巷少年郎 2020-12-05 10:55

I am working on an android application Menu with Action Bar, I want to put the dropdown menu in the action bar like the one present in Google Maps application.

2条回答
  •  借酒劲吻你
    2020-12-05 11:39

    Add this to your activity onCreate() method:

    // Adapter
    SpinnerAdapter adapter =
            ArrayAdapter.createFromResource(this, R.array.actions,
            android.R.layout.simple_spinner_dropdown_item);
    
    // Callback
    OnNavigationListener callback = new OnNavigationListener() {
    
        String[] items = getResources().getStringArray(R.array.actions); // List items from res
    
        @Override
        public boolean onNavigationItemSelected(int position, long id) {
    
            // Do stuff when navigation item is selected
    
            Log.d("NavigationItemSelected", items[position]); // Debug
    
            return true;
    
        }
    
    };
    
    // Action Bar
    ActionBar actions = getActionBar();
    actions.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
    actions.setDisplayShowTitleEnabled(false);
    actions.setListNavigationCallbacks(adapter, callback);
    

    This example requires an array resource for the list items:

    res/values/arrays.xml

    
        Item 1
        Item 2
        Item 3
    
    

    Alternatively you could create your own adapter and layout extended from SpinnerAdapter to display more advanced or dynamic list items.

    To make the activity onCreate code even neater you could also change your Activity to implement OnNavigationListener and add the override onNavigationItemSelected with the callback code. Then change "callback" to "this" in the setListNavigationCallbacks() method.

    Please note you will need to target API 11+ for the action bar, otherwise you will need to add version checking or a support library.

提交回复
热议问题