【问题标题】:Drop Down Menu on Action bar操作栏上的下拉菜单
【发布时间】:2012-07-07 15:08:53
【问题描述】:

我正在开发一个带有操作栏的 android 应用程序菜单,我想将下拉菜单放在操作栏中,就像谷歌地图应用程序中的菜单一样。

有人可以帮助我吗?如何实现这一点请指出一些我可以遵循的简单教程。

【问题讨论】:

标签: android android-actionbar


【解决方案1】:

将此添加到您的活动 onCreate() 方法中:

// 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);

此示例需要列表项的数组资源:

res/values/arrays.xml

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

或者,您可以创建自己的适配器和从 SpinnerAdapter 扩展的布局,以显示更高级或动态的列表项。

要使活动 onCreate 代码更加整洁,您还可以更改活动以实现 OnNavigationListener 并使用回调代码添加覆盖 onNavigationItemSelected。然后在setListNavigationCallbacks()方法中将“callback”改为“this”。

请注意,您需要针对操作栏的 API 11+,否则您需要添加版本检查或支持库。

【讨论】:

    【解决方案2】:

    检查这个链接也是有用的例子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);
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 2012-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多