下拉菜单操作栏上(Drop Down Menu on Action bar)

2019-06-26 03:20发布

我的工作与操作栏的Android应用程序菜单,我想提出的下拉菜单中像在谷歌地图应用程序中的一个出现在动作条。

有人可以帮我吗? 如何做到这一点请指向一些简单的教程,我可以遵循。

Answer 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 /值/ 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()方法。

请注意,您需要为目标的操作栏API 11+,否则,你将需要添加版本检查或支持库。



Answer 2:

检查此链接也实在是有帮助的例子实例链接

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

}


文章来源: Drop Down Menu on Action bar