Используйте вкладку с новой панелью инструментов (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 ответа:
С 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);
цвета '