将切换按钮添加到操作栏

时间:2015-09-01 20:43:08

标签: android android-actionbar

我有map个活动,我正在尝试将toggle button添加到包含地图类型的设置菜单旁边的操作栏,但我遇到了问题:切换按钮正在添加到设置项目菜单,而不是直接到actionbar

如何将此切换按钮添加到设置菜单旁边的操作栏?

map_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/mapTypeNormal"
        android:title="Normal"/>
    <item
        android:id="@+id/mapTypeSatellite"
        android:title="Satellitte"/>
    <item
        android:id="@+id/mapTypeTerrain"
        android:title="Terrain"/>
    <item
        android:id="@+id/mapTypeHybrid"
        android:title="Hybrid"/>
    <item
        android:id="@+id/mapTypeNone"
        android:title="None"/>

    <item android:id="@+id/menu_toggle"
    android:showAsAction="ifRoom"
    android:icon="@drawable/off"
    android:title="Share"
     />
</menu>

地图活动:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.map_menu, menu);
    System.out.println("ABC MAP onCreateOptionsMenu was invoked.");

    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.mapTypeNone:
        map.setMapType(GoogleMap.MAP_TYPE_NONE);
        break;

    case R.id.mapTypeNormal:
        map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
        break;

    case R.id.mapTypeSatellite:
        map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
        break;

    case R.id.mapTypeTerrain:
        map.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
        break;
    case R.id.mapTypeHybrid:
        map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        break;

    default:
        break;
    }
    switch (item.getItemId()) {
    case R.id.menu_toggle:

        if (birthSort) {
            // change your view and sort it by Alphabet
            item.setIcon(R.drawable.on);
            item.setTitle("On");
            birthSort = false;
        } else {
            // change your view and sort it by Date of Birth
            item.setIcon(R.drawable.off);
            item.setTitle("Off");
            birthSort = true;
        }


    }
    return super.onOptionsItemSelected(item);
}

}

1 个答案:

答案 0 :(得分:0)

在菜单项上使用其他属性始终

app:showAsAction="always"

它也可以与文本结合使用:

app:showAsAction="withText|always"

相应地调整命名空间。这是一个完整的样本:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">
  <item
      android:id="@+id/action_sync"
      android:title="@string/action_sync"
      app:showAsAction="withText|always"/>
</menu>

注意showAsAction的 app:前缀和相应的名称空间声明。