Drop Down Menu on Action bar

后端 未结 2 1215
旧巷少年郎
旧巷少年郎 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

    <string-array name="actions">
        <item>Item 1</item>
        <item>Item 2</item>
        <item>Item 3</item>
    </string-array>
    

    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.

    0 讨论(0)
  • 2020-12-05 11:43

    check this Link also it is helpful example Example link

    GoogleMap map;
    
    TextView txt;
    
    String[] mapTypes={"Normal","Hybrid","Satellite","Terrain"};
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
                .getMap();
    
        txt=(TextView)findViewById(R.id.textView1);
    
    //to set map Type
        map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
    
    //To set the marker on map on specific location using lat lag
        // latitude and longitude
        double latitude = 18.520430300000000000;
        double longitude = 73.856743699999920000;
    
        // create marker
        MarkerOptions marker = new MarkerOptions().position(new LatLng(latitude, longitude)).title("My Location");
    
        // change color to the marker icon
        marker.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN));
    
        // adding marker
        map.addMarker(marker);
    
        // Create an array adapter to populate dropdownlist 
        ArrayAdapter<String> adapter =new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_spinner_dropdown_item, mapTypes);
    
        /** Enabling dropdown list navigation for the action bar */
        getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
    
        /** Defining Navigation listener */
        ActionBar.OnNavigationListener navigationListener=new ActionBar.OnNavigationListener() {
    
            @Override
            public boolean onNavigationItemSelected(int itemPosition, long itemId) {
                Toast.makeText(getBaseContext(), "U Select : "+mapTypes[itemPosition], Toast.LENGTH_SHORT).show();
                if (mapTypes[itemPosition].equals("Normal")) {
                    map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
                }
                else if (mapTypes[itemPosition].equals("Hybrid")) {
                    map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
                }
                else if (mapTypes[itemPosition].equals("Satellite")) {
                    map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
                }
                else if (mapTypes[itemPosition].equals("Terrain")) {
                    map.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
                }
                return false;
            }
        };
    
        // Setting dropdown items and item navigation listener for the actionbar 
        getActionBar().setListNavigationCallbacks(adapter, navigationListener);
    
    }
    
    0 讨论(0)
提交回复
热议问题