Типичное приложение часто имеет детальное представление с CollapsingToolbar.Как можно построить это под эту архитектуру?
Отличный вопрос!Я немного поборолся с этим и пришел к выводу, что должен быть один Activity с NavHostFragment и, в идеале, больше ничего.Это дает вам максимальную гибкость для отображения (или не отображения) того, что вам нужно для каждого экрана.Важно отметить, что ваша тема удаляет панель действий:
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
Что приводит к следующему вопросу ...
Переместить панель инструментов в каждый фрагмент XML?
По-моему, да!Все, что вы обычно используете ActionBar, может быть сделано через панель инструментов.Вот краткий фрагмент, показывающий, как можно использовать панель инструментов для выполнения самых важных задач, которые вы использовали в ActionBar в прошлом (навигация вверх, заголовок, меню параметров и т. Д.):
toolbar.apply {
setNavigationOnClickListener { findNavController().navigateUp() }
setTitle(R.string.toolbar_title)
inflateMenu(R.menu.fragment_menu)
setOnMenuItemClickListener(::onMenuItemClick)
}
Программно реализовать свертывающуюся панель инструментов?
Это зависит от того, что именно вы пытаетесь сделать, но, скорее всего, в этом нет необходимости.Вы можете добавить AppBarLayout, CollapsingToolbarLayout и панель инструментов в свой макет и использовать их как обычно.Дайте вашему AppBarLayout наложение темы ActionBar.Вот пример:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.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:id="@+id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapsingToolbarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:contentScrim="@color/primary"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:navigationIcon="@drawable/ic_up_white"/>
...
Переместить фрагмент детали в его собственное действие (оно может использовать собственную ссылку) в любом случае и «сломать» философию?
Нетнужно для этого с вышесказанным, верно?Это достаточно гибкий подход, позволяющий легко разместить несколько уровней на одном навигационном графе и при этом иметь возможность настраивать внешний вид и поведение каждого пункта назначения на графике (включая функциональность, подобную ActionBar).