我有map
个活动,我正在尝试将toggle button
添加到包含地图类型的设置菜单旁边的操作栏,但我遇到了问题:切换按钮正在添加到设置项目菜单,而不是直接到actionbar
。
如何将此切换按钮添加到设置菜单旁边的操作栏?
map_menu.xml
<item
android:id="@+id/mapTypeNormal"
android:showAsAction="always"
android:title="Normal"/>
<item
android:id="@+id/mapTypeSatellite"
android:showAsAction="always"
android:title="Satellitte"/>
<item
android:id="@+id/mapTypeTerrain"
android:showAsAction="always"
android:title="Terrain"/>
<item
android:id="@+id/mapTypeHybrid"
android:showAsAction="always"
android:title="Hybrid"/>
<item
android:id="@+id/mapTypeNone"
android:showAsAction="always"
android:title="None"/>
<item android:id="@+id/menu_toggle"
android:showAsAction="ifRoom|withText"
android:icon="@drawable/off"
android:title="Share"
/>
地图活动:
@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);
}
}
编辑:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/mapTypeNormal"
android:showAsAction="never"
android:title="Normal"/>
<item
android:id="@+id/mapTypeSatellite"
android:showAsAction="never"
android:title="Satellitte"/>
<item
android:id="@+id/mapTypeTerrain"
android:showAsAction="never"
android:title="Terrain"/>
<item
android:id="@+id/mapTypeHybrid"
android:showAsAction="never"
android:title="Hybrid"/>
<item
android:id="@+id/mapTypeNone"
android:showAsAction="never"
android:title="None"/>
<item
android:id="@+id/menu_toggle"
android:icon="@drawable/off"
android:showAsAction="always"
android:title="Share"/>
</menu>
答案 0 :(得分:1)
在使用AppCompat
库时,来自showAsAction
的{{1}}因某些原因无效,您必须使用来自http://schemas.android.com/apk/res/android
的文件。
您可以使用命名空间http://schemas.android.com/apk/res-auto
添加所需的架构,如下所示:
app
然后,对于要在xmlns:app="http://schemas.android.com/apk/res-auto"
上保持可见的菜单项,您可以添加以下属性:
ActionBar
以及其他人可以添加:
app:showAsAction="always"
所以你的map_menu.xml将是:
app:showAsAction="ifRoom"
答案 1 :(得分:0)
我这样做了,它对我有用
<item
android:id="@+id/mapTypeNormal"
app:showAsAction="never"
android:title="Normal"/>
<item
android:id="@+id/mapTypeSatellite"
app:showAsAction="never"
android:title="Satellitte"/>
<item
android:id="@+id/mapTypeTerrain"
app:showAsAction="never"
android:title="Terrain"/>
<item
android:id="@+id/mapTypeHybrid"
app:showAsAction="never"
android:title="Hybrid"/>
<item
android:id="@+id/mapTypeNone"
app:showAsAction="never"
android:title="None"/>
<item
android:id="@+id/menu_toggle"
android:icon="@drawable/off"
app:showAsAction="always"
android:title="Share"/>