Статьи

Android Actionbar Выпадающая навигация

ActionBar поддерживает различные типы навигации внутри действий. Мы видели в более старом посте, что мы можем использовать вкладки для навигации или мы можем использовать Drop Down Navigation . В этом посте мы увидим, как мы можем реализовать выпадающую навигацию с использованием фрагментов. Что такое выпадающая навигация ? По сути, это список элементов в панели действий. Эти элементы представляют действие, и когда мы выбираем один из них, мы активируем соответствующее действие. Обычно, выбирая один элемент, мы перемещаем его в другой пользовательский интерфейс, который можно реализовать с помощью фрагментов.

Создание раскрывающейся навигации

Eclipse + ADT и Android studio поддерживают этот вид навигации, и мы можем найти все необходимое для ее реализации. Мы хотим проанализировать код, сгенерированный автоматически. Чтобы включить раскрывающуюся навигацию в нашей Деятельности, мы можем создать новый проект и дойти до последнего шага, прежде чем подтвердить все, что у нас есть:

Immagine1 [3]

Чтобы включить раскрывающуюся навигацию, мы должны получить ссылку на панель действий и установить требуемый тип навигации, в нашем случае NAVIGATION_MODE_LIST. Если мы посмотрим на сгенерированный код, то заметим:

1
2
3
4
// Set up the action bar to show a dropdown list.
final ActionBar actionBar = getActionBar();
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

где в строке 4 мы включаем наш тип навигации.

Реализация элемента навигации

Нам нужно создать список элементов, соответствующих действию, которое мы хотим поддержать. Другими словами, мы должны создать меню с различными пунктами. Выпадающий список реализован как Spinner. Мы знаем, что Spinner — это вид Android, который отображается по одному, и пользователь может выбрать один элемент из списка элементов. Поэтому для создания нашего выпадающего списка навигации нам нужно просто заполнить счетчик. Чтобы заполнить счетчик, нам нужен адаптер, в нашем случае простой ArrayAdapter, поэтому мы имеем:

1
2
3
4
ArrayList<String> itemList = new ArrayList<String>();
itemList.add("Section 1");
itemList.add("Section 2");
ArrayAdapter<String> aAdpt = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, itemList);

Глядя на сгенерированный код, мы замечаем, что он немного отличается от того, который мы имеем выше, потому что вместо этого он использует getActionBarThemedContextCompat. Глядя на этот код метода, мы обнаруживаем, что он возвращает его для всех версий ниже Ice Cream Sandwich и другого значения в противном случае. Это используется для поддержания совместимости со всеми версиями Android.

Теперь мы должны назначить наш адаптер панели действий, мы можем сделать это с помощью:

1
actionBar.setListNavigationCallbacks(aAddpt, this);

Обратите внимание, что мы использовали это как параметр метода. Это означает, что наша деятельность должна реализовывать интерфейс, чтобы он получал уведомления, когда пользователь выбирает элемент.

Реализация ActionBar.OnNavigationListener

Как мы уже говорили, чтобы получать уведомления, когда пользователь выбирает элемент, мы реализуем ActionBar.OnNavigationListener, который имеет только один метод для переопределения:

1
2
3
4
@Override
public boolean onNavigationItemSelected(int position, long id) {
  // Our logic
}

Теперь в этом методе мы должны активировать правильное представление в соответствии с пунктом, выбранным пользователем. Обычно мы можем использовать Fragment, чтобы включить правильный интерфейс. В этом методе мы можем создать новый фрагмент и заменить существующий новым.

Запустив код мы имеем:

android_drop_down_navigation_1 [4]
android_drop_down_navigation_2 [3]

Вы можете быть заинтересованы в: Панель действий Android (ActionBar) Вкладка навигации

Ссылка: Android Actionbar Выпадающая навигация от нашего партнера JCG Франческо Аццолы в блоге Surviving с Android .