Как установить NAVIGATION_MODE_LIST на Панели инструментов new appcompat v7 21
Теперь все методы, связанные с режимами навигации в классе ActionBar
, такие как setNavigationMode()
... теперь устарели.
В документации объясняется:
Action bar navigation modes are deprecated and not supported by inline toolbar action bars. Consider using other common navigation patterns instead.
В моем текущем приложении на ActionBar есть счетчик. Как применить NAVIGATION_MODE_LIST
на новой панели инструментов виджета в новой версии appcompat v7 21.
Спасибо заранее.
Ответы
Ответ 1
В API 21 метод setNavigationMode(ActionBar.NAVIGATION_MODE_LIST)
устарел.
Лучший способ работы с прядильщиком - использовать панель инструментов следующим образом:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_actionbar"
android:layout_height="?attr/actionBarSize"
android:layout_width="match_parent"
android:background="?attr/colorPrimary">
<Spinner
android:id="@+id/spinner_toolbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</android.support.v7.widget.Toolbar>
Вы можете найти пример в Google IO 2014
Ответ 2
Как всегда, Габриэле прав, поэтому ваш код будет выглядеть следующим образом:
Итак, это будет выглядеть примерно так:
private ActionBar actionBar;
private Toolbar toolbar;
private Spinner spinner;
private List<String> mNavigationItems;
private ArrayAdapter<CharSequence> mArrayAdapter;
/***
* Boolean to know which version is running
*/
private boolean postICS,postLollipop;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_nav_list);//find the toolbar
toolbar = (Toolbar) findViewById(R.id.toolbar);
postLollipop =getResources().getBoolean(R.bool.postLollipop);
if(postLollipop){
toolbar.setElevation(15);
}
//define the toolbar as the ActionBar
setSupportActionBar(toolbar);
actionBar=getSupportActionBar();
//now manage the spinner
mNavigationItems=new ArrayList<String>();
mNavigationItems.add("navigation 1");
mNavigationItems.add("nav 2");
mNavigationItems.add("navigation 3");
spinner= (Spinner) findViewById(R.id.action_bar_spinner);
mArrayAdapter = new ArrayAdapter(this, R.layout.actionbar_spinner_dropdown_item, mNavigationItems);
mArrayAdapter.setDropDownViewResource(R.layout.actionbar_spinner_dropdown_item);
spinner.setAdapter(mArrayAdapter);
}
И старайтесь не использовать spinnerAdapter (потому что вы не сможете управлять своим стилем с помощью AppTheme).
И если вы хотите использовать Tab (NavigationMode.Tabs), вы должны использовать библиотеку Design (здесь объясняется: http://android-developers.blogspot.fr/2015/05/android-design-support-library.html?m=1)and скопировать пасту ниже
"
Вкладки Переключение между различными видами в приложении через вкладки не является новую концепцию к материальному дизайну, и они одинаково дома как верх или для организации различных группировок контента в вашем приложении (скажем, разных жанров музыки).
Библиотеки Design TabLayout реализуют обе фиксированные вкладки, где ширина просмотров делится поровну между всеми вкладками, а также прокручиваемые вкладки, где вкладки не имеют одинакового размера и могут прокручиваться горизонтально. Вкладки можно добавлять программно:
TabLayout tabLayout =...; tabLayout.addTab(tabLayout.newTab(). setText ( "Tab 1" )); Однако, если вы используют ViewPager для горизонтального подкачки между вкладками, вы можете создайте вкладки непосредственно из вашего PagerAdapters getPageTitle(), а затем подключите их вместе, используя setupWithViewPager(). Это гарантирует, что события выбора табуляции обновляют ViewPager и изменения страницы, обновляют выбранная вкладка.
"