我有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);
}
}
答案 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:前缀和相应的名称空间声明。