Чтобы это работало, вы должны поместить BottomNavigationView
в качестве прямого потомка макета CoordinatorLayout
. Измените ваш макет примерно так:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_dashboard" />
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="?android:attr/windowBackground"
android:foreground="?attr/selectableItemBackground"
app:itemBackground="@color/bgBottomNavigation"
app:itemIconTint="@android:color/white"
app:itemTextColor="@android:color/white"
app:menu="@menu/menu_bottom_navigation"
app:layout_behavior="@string/hide_bottom_view_on_scroll_behavior"/>
</android.support.design.widget.CoordinatorLayout>
Возьмите ConstraintLayout
в качестве корня в вашем @layout/content_dashboard
и поместите RecyclerView
и другие виды там:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:showIn="@layout/app_bar_dashboard">
<android.support.v7.widget.RecyclerView
android:layout_width="0dp"
android:layout_height="0dp"
android:id="@+id/recycler"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layoutManager="android.support.v7.widget.LinearLayoutManager"
/>
....
....
</android.support.constraint.ConstraintLayout>
Отличительный признак между библиотекой классов и платформой программного обеспечения - то, что в платформе, поток управления не определяется кодом пользователя, но платформой.
Это также известно как голливудский принцип (не звоните нам, мы звоним Вам).
Между прочим, существует также хорошая статья Wikipedia об этой теме.
Вы используете библиотеку классов в записи Вашего кода, но Вы кодируете в платформе.
Термин "платформа" предназначен для вызова смысла "того, чтобы быть в среде". Если бы я должен был поместить (ограниченную) аналогию с ним, то я сказал бы, что библиотека классов похожа на способность съесть вино сыра и напитка, тогда как платформа похожа на посещение Франция; испытание культуры. Платформа является структурой, вокруг которой Вы создаете свою программу. Библиотека классов является инструментами, которые Вы используете (возможно в платформе).
Конечно, платформа будет обычно содержать библиотеки классов..NET, например, имеет "кучу" библиотек классов, которые включены во всю платформу.
Библиотекой классов обычно является DLL или пакет классов, которые можно "включать" / "ссылка" в решение и повторное использование.
Платформа обычно является повторяющимся шаблоном/решением, предназначенным к определенному контексту, например, Платформе GUI. Платформа больше, чем часто подразумевают, что Вы пишете определенные части, как продиктовали разработчики платформы, вставляете их в, ожидала/исправляла места, и она должна работать.
Платформа обычно содержит несколько библиотек классов. Как всегда, термины используются неоднозначным способом в наше время.. но вышеупомянутое представляет более общую интерпретацию условий... мой по крайней мере :)
Часто Вы пользуетесь библиотеками для вкладывания определенной функциональности СОБСТВЕННЫЙ software/infrastructre. Например, печатая штрихкод, Вы пользовались бы библиотекой, чтобы сделать так. Платформа абстрагирует целый класс проблем, возможно, проблема записи веб-приложений. Чтобы сделать так, платформа обеспечивает "кадр" со всей функциональностью и тупиками, против которых можно программировать.
Вы называете код библиотеки классов, где, поскольку платформа называет Ваш код
Библиотека классов является просто рядом классов, инкапсулировавших в определимую единицу, таких как блок. Термин не ограничивается никаким конкретным языком или платформой.
Библиотека базовых классов (BCL) является конкретным термином атрибуты к набору класса libaries, которые прибывают предварительно установленные с Платформой.NET, которые обеспечивают классы, аккуратно организованные в пространства имен так, чтобы у Вас был API, против которого можно создать Ваши собственные решения.
Платформа является более широким термином, который является содержащим из библиотек классов, виртуальная машина, которая справляется с управляемым выполнением процессов, обеспечивает среду выполнения, наряду с другими услугами, такими как управление памятью и обработка исключений. Посмотрите Платформу.NET для получения дополнительной информации.
Я утверждал бы, что эти два являются довольно взаимозаменяемыми... - это - просто ряд общего повторно используемого кода (в любой платформе, для которой Вы нацелены), обычно предоставляемый платформой.
Возможно, Вы могли утверждать, что BCL обычно представляет "чистые" модули (не зависящий от производителя продукта), тогда как "платформа" может (в зависимости от того, как Вы используете термин), включают сделанные на заказ модули поставщика. Но это это, возможно, открывается к локальной интерпретации.
Платформа является предположительно связным набором одной или нескольких библиотек классов. Java и платформы.NET, например, составлены из сотен библиотек классов. В.NET существует, пользовательским, но не обязательно, корреспонденция между блоками и библиотеками классов. В Java существует грубая корреспонденция между пространствами имен и библиотеками классов.
Хотя я никогда не замечал фразу "библиотека базовых классов", я ожидал бы, что такая вещь содержать абстрактные классы намеревалась быть разделенной на подклассы перед использованием.
Платформа в смысле моего первого абзаца подразумевает полноту в области библиотеки. Например, Вы ожидали бы, что платформа обработки изображения будет содержать все, что необходимо управлять изображениями, в пределах от синтаксических анализаторов формата файла к графическим операциям в оперативной памяти.
Я думаю о платформе как о шаблоне, которому приложение может приспособить, определенный в ряде библиотек.
"Основная" библиотека классов могла бы означать несколько вещей в зависимости от контекста; это могло относиться к классам, которые разработаны, чтобы быть полученными из, который является общим подходом в платформах, или это могло просто относиться к оперативной библиотеке классов, которые, как предполагают, полезны в любом приложении и так считаются "основной" потребностью, почти часть языка (например, контейнерные классы).