Подтвердить что ты не робот

Как установить 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.
Спасибо заранее.

4b9b3361

Ответ 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 и изменения страницы, обновляют выбранная вкладка.

"