Выпадающее меню на панели действий
Я работаю над меню приложения Android с панелью действий, я хочу поместить раскрывающееся меню в панель действий, подобное тому, что присутствует в приложении "Карты Google".
![Google Maps 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/значения/arrays.xml
<string-array name="actions">
<item>Item 1</item>
<item>Item 2</item>
<item>Item 3</item>
</string-array>
В качестве альтернативы вы можете создать собственный адаптер и макет, расширенный из SpinnerAdapter, чтобы отображать более сложные или динамические элементы списка.
Чтобы сделать операцию onCreate code even neater, вы также можете изменить свою активность для реализации OnNavigationListener и добавить переопределение onNavigationItemSelected с кодом обратного вызова. Затем измените "обратный вызов" на "this" в методе setListNavigationCallbacks().
Обратите внимание, что вам нужно настроить таргетинг на API 11+ для панели действий, иначе вам нужно будет добавить проверку версий или библиотеку поддержки.
Ответ 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);
}