Автор оригинала: Pankaj Kumar.
В этом уроке мы обсудим и реализуем TabLayout для Android в нашем приложении для Android. Также мы рассмотрим детали дизайна материалов.
Android TabLayout AppBarLayout
В предыдущих уроках мы обсуждали преимущества использования CoordinatorLayout в качестве основы макета нашей деятельности. Все это время мы не вдавались в детали отображения приложений и их использования. Давайте разберемся в этом сейчас.
AppBarLayout
AppBarLayout-это вертикальная линейная разметка, которая, как правило, является первым дочерним элементом в области координат и в большинстве случаев служит оболочкой для панели инструментов. Использование панели инструментов в качестве прямого дочернего элемента CoordinatorLayout будет работать нормально, но она не сможет координировать свои действия с другими присутствующими дочерними представлениями. Вот где возникает важность AppBarLayout. Это позволяет дочерним представлениям достигать желаемого поведения прокрутки с помощью параметра app:layout_scrollFlags
Ниже приведен пример xml-макета для приведенного выше описания:
Атрибут app:layout_scrollFlags
панели инструментов указывает представлению, как реагировать. Он имеет следующие возможные значения.
- прокрутка : Этот флаг обычно устанавливается для всех видов, которым необходимо прокручивать за пределами экрана. Представления, которые не используют этот флаг, остаются статичными, позволяя другим прокручиваемым представлениям скользить за ним
- введите всегда : Этот флаг гарантирует, что любая прокрутка вниз приведет к тому, что вид станет видимым, что позволит быстро вернуться к шаблону
- enterAlwaysCollapsed : дополнительный флаг для “enterAlways”, который изменяет возвращаемый вид только на начальную прокрутку до его свернутой высоты.
- exitUntilCollapsed : Этот флаг заставляет прокручивать представление до тех пор, пока оно не свернется (будет достигнута его минимальная высота) перед выходом
- привязка : По окончании прокрутки, если вид виден только частично, он будет привязан и прокручен до ближайшего края. Следовательно, это позволяет избежать промежуточных анимационных состояний представления
Таблица
Макет вкладки-еще один популярный тип представления, представленный в Руководстве по дизайну материалов. Он обеспечивает горизонтальное расположение вкладок, которые обычно размещаются в верхней части экрана в соответствии с рекомендациями пользовательского интерфейса Android.
В следующем фрагменте xml показано, как определяется макет вкладки.
Макет вкладки состоит из двух важных xml-атрибутов, описанных ниже:
приложение:tabMode
– Это принимает два значения:- исправлено – При этом отображаются все вкладки на экране. Обычно используется, когда имеется до 3 вкладок
- прокрутка – Это позволяет пользователю прокручивать вкладки по горизонтали.
приложение:tabGravity
– Этот атрибут работает только в том случае, еслиприложение:tapMode="исправлено"
. Это также принимает два значения:- заполнено – Это распределит горизонтальную ширину по всем вкладкам
- центр – Он отобразит все вкладки в центральной горизонтальной части экрана
Примечание: Макет вкладки, как правило, реализуется вместе с видовым окном. Мы реализуем это в более позднем уроке.
Давайте перейдем к бизнес-логике нашего приложения, в котором размещена панель инструментов и таблица внутри панели приложений.
Структура проекта Android TabLayout AppBarLayout
Пример кода для Android-таблицы AppBarLayout
В activity_main.xml
приводится ниже.
В приведенном выше коде мы добавили линейный вывод под заголовком AppBarLayout. Важные выводы, которые необходимо сделать, заключаются в следующем:
- Вывод строки без оператора
приложение:layout_behavior="@string/appbar_scrolling_view_behavior
будет перекрывать вывод строки с выводом приложения. - Вывод строки в качестве прямого дочернего элемента в выводе координатора не будет прокручиваться. Следовательно, мы сохранили его внутри вложенного представления
- В макете вкладки нет
layout_scrollFlags
. Следовательно, он не будет прокручиваться с экрана, как панель инструментов. Мы скоро это увидим.
В MainActivity.java приводится ниже
package com.journaldev.tablayoutappbar; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.design.widget.TabLayout; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; public class MainActivity extends AppCompatActivity { TabLayout tabLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); tabLayout=(TabLayout)findViewById(R.id.tabs); tabLayout.addTab(tabLayout.newTab().setText("Tab 1")); tabLayout.addTab(tabLayout.newTab().setText("Tab 2")); tabLayout.addTab(tabLayout.newTab().setText("Tab 3")); } }
Результаты вышеупомянутого приложения показаны ниже
Несколько примечательных моментов из приведенного выше вывода::
- При прокрутке строка состояния также прокручивается вверх, тем самым в большинстве случаев панель инструментов находится в несогласованном состоянии
- Индикаторы панели вкладок имеют цвет по умолчанию, установленный в качестве цветового акцента
- Цвет фона вкладок по умолчанию-colorPrimary
Первый вопрос-серьезный. Чтобы решить эту проблему, перейдите к решениям->значения-21->styles.xml файл. Измените строку @android:цвет/прозрачный
на @color/colorPrimaryDark
Вот как должен выглядеть вывод сейчас:
Существует множество способов настройки макетов вкладок. Попробуйте вызвать раздел() в методе new Tab() вместо setText(). На нем будут отображаться рисованные значки. Вы даже можете реализовать их оба, как
tabLayout.addTab(tabLayout.newTab().setText("Speaker Phone").setIcon(android.R.drawable.stat_sys_speakerphone)); tabLayout.addTab(tabLayout.newTab().setText("Headset").setIcon(android.R.drawable.stat_sys_headset)); tabLayout.addTab(tabLayout.newTab().setText("Bluetooth").setIcon(android.R.drawable.stat_sys_data_bluetooth));
Я закончил выводом ниже, используя приведенный выше фрагмент. Что насчет тебя?
Кроме того, мы можем создавать ваши собственные стили в style.xml как показано ниже.
Давайте добавим приведенный выше стиль в соответствующий вид в activity_main.xml
В итоге мы получили такой результат:
Вы можете дополнительно оформить его в соответствии с вашими собственными потребностями, чтобы улучшить UX вашего приложения. На этом этот урок заканчивается. Мы будем реализовывать макеты вкладок с помощью ViewPager в нашем следующем приложении. Вы можете скачать проект Макеты вкладок Android по ссылке ниже