Используйте вкладку с новой панелью инструментов (AppCompat v7-21)


я использовал SupportActionBar с вкладками и пользовательской темой ActionBar (созданной с помощью http://jgilfelt.github.io/android-actionbarstylegenerator/), которые показывают вкладки только тогда, когда пользователь расширяет представление поиска.

public boolean onMenuItemActionExpand(MenuItem item) {
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        return true;
    }
}

я перешел с панели действий на панель инструментов. Мое приложение действительно должно поддерживать API 9.

есть ли способ, чтобы использовать этот код, чтобы добавить вкладки?:

Toolbar toolbar = (Toolbar) findViewById(R.id.new_actionbar);
setSupportActionBar(toolbar);
getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

Если возможно, как я могу использовать свою пользовательскую тему или стиль панель инструментов?

в документации говорится, что это устарело и предлагает использовать другой тип навигации. Но я не знаю никаких других компонентов в Android, которые имеют такую же функциональность.

помочь?

2 69

2 ответа:

С API 21 метод setNavigationMode(ActionBar.NAVIGATION_MODE_TABS) - это устаревший.

вы можете использовать другой шаблон. Например, вы можете использовать тот же пример, который вы можете увидеть в googleio14.

использует SlidingTabLayout работает с ViewPager.

здесь вы можете найти пример (это в вашем примере sdk)

здесь вы можете найти Google io14 пример:

обновление 29/05/2015

новая Библиотека Поддержки Дизайна теперь вы можете использовать новый тег TabLayout.

просто добавьте эту зависимость в свой build.gradle

compile 'com.android.support:design:22.2.0'

код очень простой:

TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);

для реализации многих функций материал конструкции вы должны использовать его в CoordinatorLayout и AppBarLayout.

что-то вроде этого:

 <android.support.design.widget.CoordinatorLayout
         xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:app="http://schemas.android.com/apk/res-auto"
         android:layout_width="match_parent"
         android:layout_height="match_parent">


     <android.support.design.widget.AppBarLayout
             android:layout_height="wrap_content"
             android:layout_width="match_parent">

         <android.support.v7.widget.Toolbar
                 ...
                 app:layout_scrollFlags="scroll|enterAlways"/>

         <android.support.design.widget.TabLayout
                 ...
                 app:layout_scrollFlags="scroll|enterAlways"/>

     </android.support.design.widget.AppBarLayout>

     <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

 </android.support.design.widget.CoordinatorLayout>

хотя, вероятно, немного поздно, чтобы ответить на этот вопрос сейчас, я понял, что написал ответ на аналогичный вопрос который охватывает как использование библиотеки поддержки дизайна, так и до Google I / O.

я включил основные части ниже:


С помощью TabLayout С Toolbar стало намного проще с момента объявления Библиотека Поддержки Дизайна Android это означает, что нам больше не нужно загружать пользовательские класс представления.

С сообщение разработчиков Android Blogspot в библиотеке поддержки дизайна Android:

вкладки:

переключение между различными видами в вашем приложении через tabs - это не новая концепция материального дизайна, и они в равной степени дома как шаблон навигации верхнего уровня или для организации различных групп контента в вашем приложении (скажем, различные жанры музыка.)

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

TabLayout tabLayout = ...;
tabLayout.addTab(tabLayout.newTab().setText("Tab 1"));

однако, если вы используете ViewPager для горизонтальной подкачки между вкладки, вы можете создавать вкладки непосредственно из вашего PagerAdapter ' s getPageTitle () а затем соединить их вместе с помощью setupWithViewPager(). Это гарантирует, что события выбора вкладки обновят ViewPager, а изменения страницы обновят выбранную вкладку.


если вы не используете библиотеку поддержки проектирования, вместо этого вам нужно будет сделать следующее:

1. скачать SlidingTabLayout.java и SlidingTabStrip.java файлы из приложения конференции ввода-вывода Google на GitHub. Это будут представления, которые будут использоваться в макете вкладки, поэтому я создал папку с другими моими действиями Java под названием "view" и разместил их там.

2. отредактируйте макет, чтобы включить SlidingTabLayout:

<LinearLayout
    android:orientation="vertical"
    ... >

    <!-- This is the Toolbar with the tabs underneath -->
    <LinearLayout
        android:orientation="vertical"
        ... >

        <include android:id="@+id/my_toolbar" layout="@layout/toolbar" />

        <com.mycompany.myapp.SlidingTabLayout
            android:id="@+id/sliding_tabs"
            android:background="?attr/colorPrimary"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <!-- This is the ViewPager (which you already should have if you have
        used tabs before) -->
    <android.support.v4.view.ViewPager
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    ...

</LinearLayout>

строка, которая ссылается на Toolbar (<include android:id="@+id/detail_toolbar" layout="@layout/toolbar" />), ссылается на другой XML-файл, который я использовал для создания Toolbar.

3. измените имена пакетов в SlidingTabLayout.java и SlidingTabStrip.java соответствующий, где они были размещены. В моем случае, я использовал что-то похожее на: package com.mycompany.myapp.view; для обоих этих файлов. Организуйте импорт и добавьте все необходимое, как указано в используемой среде IDE.

4. в своем Activity (распространяющееся AppCompatActivity), установить Toolbar на onCreate способ:

Toolbar toolbar = (Toolbar) findViewById(R.id.detail_toolbar);
setSupportActionBar(toolbar);

5. настройка элемент ViewPager и SlidingTabLayout детали:

mViewPager = (ViewPager) findViewById(R.id.view_pager);
mViewPager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager()));
mSlidingTabLayout = (SlidingTabLayout) findViewById(R.id.sliding_tabs);
mSlidingTabLayout.setSelectedIndicatorColors(getResources().getColor(R.color.tab_line));   
mSlidingTabLayout.setDistributeEvenly(true);
mSlidingTabLayout.setViewPager(mViewPager);

цвета '